2019-10-15

MVC开发模式

M层:适合做一些业务逻辑处理,比如数据库存取操作,网络操作,复杂的算法,耗时的任务等都在model层处理。

V层:应用层中处理数据显示的部分,XML布局可以视为V层,显示Model层的处理过后的数据结果。

C层:在Android中,Activity处理用户交互问题,因此可以认为Activity是控制器,Activity读取V视图层的数据(eg.读取当前EditText控件的数据),控制用户输入(eg.EditText控件数据的输入),并向Model发送数据请求(eg.发起网络请求等)。

MVC的优点:

(1)耦合性低。所谓耦合性就是模块代码之间的关联程度。利用MVC框架使得View(视图)层和Model(模型)层可以很好的分离,这样就达到了解耦的目的,所以耦合性低,减少模块代码之间的相互影响。

(2)可扩展性好。由于耦合性低,添加需求,扩展代码就可以减少修改之前的代码,降低bug的出现率。

(3)模块职责划分明确。主要划分层M,V,C三个模块,利于代码的维护。

MVC:将一个软件结构分为Model-View-Controller三层,将视图层和业务层做了分离。

缺点:在早期Android中,Activity/Fragment既是View层又是Controller层,View层与Model层直接通信,代码相对臃肿,耦合度较高。

MVP开发模式

MVP:软件结构为Model-View-Presenter三层,其中View层不直接与Model层通信,而是通过Presenter层去调用Model层的逻辑,同时通过Presenter取得Model返回的数据。一般来说,Activity作为View,只处理UI逻辑,View、Presenter、Model层均使用接口来解耦,相对MVC来说,耦合程度低,易于测试,项目工程一目了然。

缺点:大大增加了代码量,每个页面View、Presenter、Model都需要定义接口,且Presenter不易复用。

MVVM

MVVM:软件结构为Model-View-ViewModel,其中View层只关心ui交互,ViewModel层负责处理业务逻辑,使用databinding或者LiveData自动将数据变化响应到ui界面。相对于MVP来说,耦合程度更低,View和ViewModel层都更容易测试,同时,减少了MVP中的大量样板代码,更加简洁清晰。

你可能感兴趣的:(2019-10-15)