写给大忙人看的MVC、MVP和MVVM

MVC

总体概念

M是指业务模型,V是指用户界面,C是控制器

细分概念

(1)M是model层:数据层。用于负责数据的处理和获取的数据接口层
(2)V是view视图:视图层。是指用户看到并且与之交互的界面。例如:由HTML元素组成的网页界面,或者软件的客户端界面
(3)C是control控制器:控制器层。它是view和model之间的中间人

MVC各个部分之间的通信关系

(1)Models:数据层,负责数据的处理和获取的数据接口层
(2)View:展示层(GUI),对于web来说所有以HTML开头的文件都属于这层
(3)Controller:控制器层,它是view和model之间的中间人
(4)理论上,所有通信都是单向的

图示

在这里插入图片描述

MVC优点

(1)耦合性低
(2)重用性高
(3)拓展性号
(4)可维护性高

MVC不适用于前端

(1)前端的view已经具备了独立处理用户事件的能力,当每个事件都流经Controller时,这一层会变得十分臃肿
(2)MVC中View和Controller一般是一一对应的,捆绑起来表示一个组件,视图与控制器的过于紧密的连接会让Controller和View都变得无法复用

MVP

概念

(1)MVP(Model-View-Presenter)是MVC的改良
(2)和MVC的相同之处在于Controller/Presenter负责业务逻辑,Model管理数据,View负责显示

图示

在这里插入图片描述

特点

(1)在MVC里,View可以直接访问Model,但MVP中的View并不能直接使用Model,而是通过为Presenter提供接口,让Presenter去更新Model,再通过观察者模式改变View
(2)与MVC相比,MVP模式通过解耦Model和View,完全分离视图和模型,使职责划分更加清晰
(3)View不依赖于Model可以将View抽离出来做成组件,它只需要提供一系列的接口提供给上层

MVP存在的问题

(1)Presenter作为Model和View的中间人,除了基本业务逻辑之外,还有大量代码需要从View到Model和从Model到View的数据进行“手动同步”,这样Presenter显得很重,维护起来比较困难
(2)而且由于没有数据绑定,如果Presenter对视图渲染的需求增多,一旦视图需求发生改变,Presenter也需要改动

MVVM

概念

(1)MVVM(Model-View-ViewModel)最早由微软提出
(2)ViewModel指“Model of View”-----视图的模型

图示

在这里插入图片描述

MVVM的特点

(1)MVVM把View和Model的同步逻辑自动化了
(2)以前Presenter负责的View和Model同步不再手动地进行操作,二十交给框架所提供地数据绑定功能进行负责,只需要告诉它View显示的数据对应Model那一部分就可以了
(3)通过ViewModel进行数据绑定,当Model发生变化,ViewModel就会自动更新;ViewModel变化,Model也会更新

总结

(1)整体上看,MVVM比MVC/MVP精简了许多,不仅仅简化了与界面的依赖,还解决了数据频繁更新的问题
(2)再MVVM中,View不知道Model的存在,ViewModel和Model也察觉不到View和,这种低耦合模式可以使开发过程更加容易,提高应用的可重用性
(3)MVVM更适合视图更多的前端项目进行工程化开发

发布了51 篇原创文章 · 获赞 26 · 访问量 1836

猜你喜欢

转载自blog.csdn.net/qq_45473786/article/details/104906286