一、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!
网友评论