浅谈MVC/MVP/MVVM(Android)架构设计模式

一、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设计模式?

一般用在比较大的设计项目当中,业务逻辑处理比较复杂,迭代需求频繁,页面显示比较多时使用。

可参考:框架模式 MVC 在Android中的使用

二、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间的交互

MVP&MVC

相对于MVC可以看出,MVP的M层数据不会和视图层V直接进行交互,而是通过Persenter层这个中介进行交互。

可参考:浅谈Android中的MVP

三、MVVM


MVVM

View:对应于Activity和xml,负责View的绘制以及与用户交互,不做业务逻辑相关的操作

Model:实体模型(数据的获取、存储和变化,提供数据接口供viewmoel层调用)

 ViewModel:负责完成View与Model交互,负责业务逻辑(不会持有认可控件的引用,也不会更新UI,这些全都由view层处理)

可参考:Android-MVVM架构-Data Binding的使用

推荐阅读更多精彩内容