MVC、MVP和MVVM的比较

时间:2022-12-21 21:15:10

自己的总结:

MVC即模型--视图--控制器架构模式很好地解决了页面中数据层、视图层、业务逻辑层(控制器)之间的耦合关系。使它们得到显性的区分,这也使得层次之间的耦合度降低。我们在开发中可以不用顾忌所有需求而专注于某一层次开发,降低了开发与维护成本。因此对于大型页面系统的开发,三个层次各司其职。每一层专注于自己的事情,有利于工程化‘模块化开发并管理代码;


MVP即模型--视图--管理器:View层不直接引用Model层内的数据,而是通过Presenter层实现对Model层内的数据访问。即所有层次的交互都发生在Presenter层中。而MVC模式开发中,视图层常常因渲染页面而直接引用数据层内的数据,对于发生的这一切,控制器常常不得而知。因此数据层内的数据修改,常常在控制器不知情的情况下影响到视图层的呈现。MVP模式是为解决此类问题而提出的。


MVP的特点:MVP中将视图层与数据层完全解耦,使得对视图层的修改不会影响到数据层,数据层内的数据改动又不会影响到视图层。因此我们在管理器中对数据或者视图灵活地调用就可使数据层内的数据与视图层内的视图得到更加高效的复用。因此MVP模式也可以实现一个管理器,可以调用多个数据,或者多种视图,而且是不受限制的,因而管理器有更高的操作权限,因此对于业务逻辑与需求的实现只专注于管理器的开发即可,当然管理器内过多的逻辑也使得其开发与维护成本提高。



MVVM即模型--视图--视图模型:为视图层(View)量身定做一套视图模型(ViewModel),并在视图模型中创建属性和方法,为视图层(View)绑定数据(Model)并实现交互。


MVVM的特点:与MVC、MVP类似主要用来分离视图和数据模型。但不同的是MVVM模式使视图层更加灵活,可以独立于数据模型层、视图模型层而独立修改,*创建。当然这也使得数据模型层可以独立变化,甚至一个视图模型层可以对应多个视图层或者数据模型层。MVVM模式是对视图模型层的高度抽象,因此当多个视图层对应同一个视图模型层时,也使得视图模型层内的代码逻辑变得高度复用。而这种开发模式最重要的一个特征就是视图层的独立开发。