MVC、MVP、MVVM模式的概念与区别

MVC

MVC全名是Model View Controller 一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面结构中。

  • Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。

  • View(视图)是应用程序中处理数据显示的部分。

  • Controller(控制器)是应用程序中处理用户交互的部分,负责从视图读取数据,控制用户输入,并向模型发送数据。

MVP

MVP是MVC的封装和演化。

  • View专注于UI的本身。

  • Presenter用于沟通View和Model之间的联系,Model不能直接作用于View 的更新。

  • Model 只用于处理跟数据获取相关的逻辑。

优点

  1. Model和View无耦合。

  2. 一个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),设计人员可以专注于页面设计。

  1. 可测试。界面素来是比较难于测试的,而现在测试可以针对ViewModel来写。

MVP与MVC的区别

在MVP中View并不直接使用Model。而在MVC中View时会直接从Model读取数据。

MVVM与MVP区别

mvvm模式将Presener改名为View Model,基本上与MVP模式完全一致,唯一的区别是,它采用双向绑定(data-binding): View的 变动,自动反映在View Model,反之亦然。这样开发者就不用处理接收事件和View更新的工作。

 

综述:目前认为还是使用MVVM最香了。

 

 

上一篇:动画:浅谈后台 MVC 模型与 MVVM 双向绑定模型


下一篇:Vue面试题之vue实现MVVM数据绑定