App架构之MVP、MVVM、MVC对比
一、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,是还待完善的框架模式,目前使用的比较少。
MVVMMVVM是MVP的演进版本,其核心是实现了双向绑定,其主要依赖于android提供的DataBingding兼容库实现。在MVVM中将MVP中Presenter替换为ViewModel。而ViewModel相当于UI与Model的桥梁,将View与Model直接绑定,并将相关的业务逻辑下移,放在Model层中进行处理。
参考代码:
Google官方架构github
[Android] MVVM设计模式及实例
Android DataBinding:再见Presenter,你好ViewModel!
更多相关文章
- Android中扫描多媒体文件操作详解
- Android经久不衰最受欢迎的开源库整理,你一定用过10个以上,架构师
- Android GSM驱动模块(rild)详细分析(一)基本架构及初始化
- 使用android快速开发框架afinal的FinalDb操作android sqlite数据
- Android商城购物车页面实现和逻辑实现
- android机制系列之七 Android Camera API1架构之一 Camera API1
- Android 开发架构学习篇