一、MVC
MVC的全称是Model View Controller ,即模型(Model)-视图(View)-控制器(Controller);
Controller:Activity、Fragment
View :layout 、View控件
Model:数据处理(网络请求、SQL等)
MVC优缺点:
优点:一定程度上实现了Model与View的分离,降低了代码的耦合性;
缺点:Controller与View难以完全解耦,并且随着项目复杂度的提升,Controller将越来越臃肿;
二、MVP
MVP即Model-View-Presenter模型;
MVP与MVC的差别:
1、Model与View不再直接进行通信,而是通过中间层Presenter来实现;
2、Activity的功能被简化,不再充当控制器,主要来负责View层的工作;
MVP优缺点:
优点:解决了MVC中Controller与View过度耦合的缺点,职责划分明显,更加易于维护;
缺点:接口数量多,项目复杂度升高;随着项目复杂度的提升,Presenter层将越来越臃肿;
使用MVP的建议
1、接口规范化(封装父类接口以减少接口的使用量)
2、使用第三方的插件自动生成MVP代码
3、对于一些简单的界面,可以选择不使用框架
4、根据项目复杂程度,部分模块可以选择不使用接口
三、MVVM
MVVM即Model-View-ViewModel模型;MVVM在MVP的基础上实现了数据视图的绑定(DataBinding),当数据变化时,视图会自动更新;反之,当视图发生变化时,数据也会自动更新。
1、减少了接口数量
2、告别繁琐findViewById操作
MVVM优缺点:
优点:实现了数据和视图的双向绑定,极大的简化代码;
缺点:bug难以调试,并且databinding目前还存在一些编译问题;
总结:
MVC:学习简单但是解耦不够彻底
MVP:解耦更加彻底,学习起来也相对比较简单,但是代码相对比较繁琐
MVVM:代码逻辑非常简洁,但是学习成本较大