MVC
MVC全名是Model View Controller 一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面结构中。
-
Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。
-
View(视图)是应用程序中处理数据显示的部分。
-
Controller(控制器)是应用程序中处理用户交互的部分,负责从视图读取数据,控制用户输入,并向模型发送数据。
MVP
MVP是MVC的封装和演化。
-
View专注于UI的本身。
-
Presenter用于沟通View和Model之间的联系,Model不能直接作用于View 的更新。
-
Model 只用于处理跟数据获取相关的逻辑。
优点
-
Model和View无耦合。
-
一个Presenter可以用于多个View,而不需要改变Presenter的逻辑。
缺点
Presenter与View的关系会相对比较耦合。
MVVM
View和ViewModel 是进行绑定的,改变ViewModel 就会直接作用到View视图上,而View 会把事件传递给ViewModel,ViewModel去对Model进行操作并接受更新。
优点
1. 低耦合。视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的"View"上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。
2. 可重用性。你可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑。
3. 独立开发。开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计。
-
可测试。界面素来是比较难于测试的,而现在测试可以针对ViewModel来写。
MVP与MVC的区别
在MVP中View并不直接使用Model。而在MVC中View时会直接从Model读取数据。
MVVM与MVP区别
mvvm模式将Presener改名为View Model,基本上与MVP模式完全一致,唯一的区别是,它采用双向绑定(data-binding): View的 变动,自动反映在View Model,反之亦然。这样开发者就不用处理接收事件和View更新的工作。
综述:目前认为还是使用MVVM最香了。