MVC是什么?
=======
MVC是模型(Model)-视图(View)-控制器(Controller)的缩写,用一种业务逻辑、数据、界面显示分离的方法组织代码。其实Android Studio创建一个项目的模式就是一个简化的mvc模式。
Android中的MVC含义
-
Model:实体类(数据的获取、存储、数据状态变化)。
-
View:布局文件
-
Controller:Activity(处理数据、业务和UI)。
工作原理
-
1.View接受用户的交互请求。
-
2.View将请求转交给Controller。
-
3.Controller操作Model进行数据更新。
-
4.数据更新之后,Model通知View数据变化。
-
5.View显示更新之后的数据。
MVC的缺点
随着界面及其逻辑的复杂度不断提升,Activity类的职责不断增加,以致变得庞大臃肿。
为了解决MVC的缺点,MVP 框架被提出来。
MVP是什么
======
MVP是MVC架构的一个演化版,全称是Model-View-Presenter。将MVC中的V和C结合生成MVP中的V,引入新的伙伴Presenter。
Android中的MVP含义
-
Model:实体类(数据的获取、存储、数据状态变化)。
-
View:布局文件+Activity。
-
Presenter:中介,负责完成View与Model间的交互和业务逻辑。
工作原理
-
1.View 接收用户交互请求
-
2.View 将请求转交给 Presenter(V调用P接口)
-
3.Presenter 操作Model进行数据更新(P调用M接口)
-
4.Model 通知Presenter数据发生变化(M调用P接口)
-
5.Presenter 更新View数据(P执行接口,V相应回调)
MVP的优点
-
1.复杂的逻辑处理放在Presenter进行处理,减少了Activity的臃肿。
-
2.解耦。Model层与View层完全分离,修改V层不会影响M层,降低了耦合性。
-
3.可以将一个Presenter用于多个视图,而不需要改变Presenter的逻辑。
-
4.Presenter层与View层的交互是通过接口来进行的,便于单元测试。
MVP的缺点
维护困难。Presenter中除了业务逻辑以外,还有大量的View->Model,Model->View的手动同步逻辑,造成Presenter比较笨重,维护起来会比较困难。
MVVM是什么
=======
是 Model-View-ViewModel 的简写。MVVM与MVP的结构还是很相似的,就是将Presenter升级为ViewModel。在MVVM中,View层和Model层进行了双向绑定(即Data Binding),所以Model数据的更改会表现在View上,反之亦然。ViewModel就是用来根据具体情况处理View或Model的变化。
Android中的MVVM含义
-
Model:实体类(数据的获取、存储、数据状态变化)。
-
View:布局文件+A