架构Android进阶之路Android技术知识

App架构之MVP、MVVM、MVC对比

2017-08-09  本文已影响80人  梦语少年

一、MVC

MVC,即Model、View、Controller三部分,是最简单的框架模式。


MVC

视图(View):用户界面,Android中使用XML布局实现。
控制器(Controller):业务逻辑,Android中使用Activity实现。
模型(Model):数据保存,Android中应该单独提取出一个类来实现。

- MVC在项目中出现的问题
在Android中,所以的交互都要通过Activity来实现,包括数据的获取、View的绑带、动画、事件监听、逻辑处理,生命周期的管理等等,Activity不再只是一个Controller,它包含了太多不同的功能。而且,其不仅仅违背了单一原创,更导致Activity类过于臃肿,出现异常难以捕捉,与各个模块之间耦合性严重,扩展、新增业务逻辑都会变的困难,测试相关的操作也变的更加复杂。

- MVC在优化建议(类似于MVP)
1.View的交互,转移到Fragment中进行处理。
2.对Actvity中的对数据相关的操作,提取到Model层中,对Model层进行单独的封装,在封装类中处理数据相关的逻辑。
3.Activity仅仅作为一个容器,只包含必要的UI操作。

二、MVP

MVP,即Model、View、Presenter,是当前最主流的APP框架模式,是MVC的升级版。

MVP

在MVP中,View或Model只可以和Presenter交互,View和Model之间不会有任何的交互,实现了View与Model之间的解耦,是View与Model相对独立,提高了代码的拓展性,View或Model的复用性。
而其核心思想就是去除了MVC的Controller层,使用Persenter代替,通过Presenter来实现对Model的操作。而Presenter是View和model的中间层,用于处理业务逻辑,Presenter中不应该存在View交互以及数据存取相关的操作。

二、MVVM

MVVM,即Model、View、VIewModel,是还待完善的框架模式,目前使用的比较少。

MVVM

MVVM是MVP的演进版本,其核心是实现了双向绑定,其主要依赖于android提供的DataBingding兼容库实现。在MVVM中将MVP中Presenter替换为ViewModel。而ViewModel相当于UI与Model的桥梁,将View与Model直接绑定,并将相关的业务逻辑下移,放在Model层中进行处理。


参考代码:
Google官方架构github
[Android] MVVM设计模式及实例
Android DataBinding:再见Presenter,你好ViewModel!

上一篇 下一篇

猜你喜欢

热点阅读