一、MVC
Android常用的开发模式有MVC、MVP及MVVM,发展到今天,主流的开发模式是MVP,但是MVP其实也是对MVC的一种演变。
A、MVC定义
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种软件的设计典范。它是用一种业务逻辑、数据、界面显示分离的方法组织代码。
好处:UI界面的显示与业务逻辑的分离。
Android当中:
1.M:业务逻辑处理(数据的数据源有三种:内存,磁盘(文件或数据库等),网络等)
2.V:处理数据显示的部分(应用层处理数据显示的部分,xml布局可视为view层)
3.C:Activity处理用户交互问题(读取view层视图数据,然后数据交给界面显示)
B、MVC特点
1.耦合性低
2.可扩展性好
3.模块指责划分明确
C、MVC总结
1.利用MVC设计模式,使得项目有了很好的扩展性和维护性;
2.contronller(控制器)是中间桥梁的作用;
3.什么时候适合使用MVC设计模式?
一般用在比较大的设计项目当中,业务逻辑处理比较复杂,迭代需求频繁,页面显示比较多时使用。
二、MVP
MVC中的Activity承担的责任太多,而MVP减轻了Activity的责任,将activity中业务逻辑抽出来,将一些复杂代码抽到presenter中进行处理,耦合性更加低。目前主流的开发模式是MVP。
MVP全名是Model-View-Presenter ,MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。
M:依然是业务逻辑和实体模型
V:对应于Activity,负责View的绘制以及与用户交互
P:负责完成View于Model间的交互
相对于MVC可以看出,MVP的M层数据不会和视图层V直接进行交互,而是通过Persenter层这个中介进行交互。
可参考:浅谈Android中的MVP
三、MVVM
View:对应于Activity和xml,负责View的绘制以及与用户交互,不做业务逻辑相关的操作
Model:实体模型(数据的获取、存储和变化,提供数据接口供viewmoel层调用)
ViewModel:负责完成View与Model交互,负责业务逻辑(不会持有认可控件的引用,也不会更新UI,这些全都由view层处理)