MVC、MVP、MVVM的区别及联系

MVC、MVP、MVVM




  1. MVC (Model View Controller)



MVC 模式将程序分为三个部分:模型(Model)、视图(View)、控制器(Controller)。








典型思路是 View 层通过事件通知到 Controller 层,Controller 层经过对事件的处理完成相关业务逻辑,要求 Model 层改变数据状态,Model 层再将新数据更新到 View层。示意图如下:



MVC、MVP、MVVM的区别及联系



在实际操作时,用户可以直接对 View 层的 UI 进行操作,以通过事件通知 Controller 层,经过处理后修改 Model 层的数据,Model 层使用最新数据更新 View。示意图如下:



MVC、MVP、MVVM的区别及联系


用户也可以直接触发 Controller 去更新 Model 层状态,再更新 View 层:

MVC、MVP、MVVM的区别及联系


某些场景下,View 层直接采用观察者/发布订阅模式监听 Model 层的变化,这样 View层和 Model 层相互持有、相互操作,导致紧密耦合,在可维护性上有待提升。由此,MVP 模式应运而生



2. MVP (Model View Presenter)



MVP 模式将程序分为三个部分:模型(Model)、视图(View)、管理层(Presenter)。







典型流程是 View 层触发的事件传递到 Presenter 层中处理,Presenter 层去操作 Model 层,并且将数据返回给 View层,这个过程中,View 层和 Model 层没有直接联系。而 View 层不部署业务逻辑,除了展示数据和触发事件之外,其它时间都在等着 Presenter 层来更新自己,被称为「被动视图」。



示意图如下:

MVC、MVP、MVVM的区别及联系



在实际操作时,用户可以直接对 View 层的 UI 进行操作,View 层通知 Presenter 层,Presenter 层操作 Model 层的数据,Presenter 层获取到数据之后更新 View。示意图如下:


MVC、MVP、MVVM的区别及联系



正如上所说,更新视图需要 Presenter 层直接持有 View 层,并通过调用 View 层中的方法来实现,还是需要一系列复杂操作,有没有什么机制自动去更新视图而不用我们手动去更新呢,所以,MVVM 模式应运而生。



3. MVVM (Model View ViewModel)



MVVM 模式将程序分为三个部分:模型(Model)、视图(View)、视图模型(View-Model)。



MVP 模式类似,Model 层和 View 层也被隔离开,彻底解耦,ViewModel 层相当于 Presenter 层,负责绑定 Model 层和 View 层,相比于 MVP 增加了双向绑定机制。


结构图如下:

MVC、MVP、MVVM的区别及联系



MVVM 模式的特征是 ViewModel 层和 View 层采用双向绑定的形式(Binding),View 层的变动,将自动反映在 ViewModel 层,反之亦然。




MVC、MVP、MVVM的区别及联系


这是为什么呢,因为 MVVM 模式要求 Model 层和 View 层完全解耦,但是由于 Vue 还提供了 ref 这样的 API,使得 Model 也可以直接持有 View


MVC、MVP、MVVM的区别及联系


但是大多数帖子都说直接称呼 Vue MVVM 框架,可见这些模式的划分也不是那么严格。


转自简书:Sky飞羽
原文链接:https://www.jianshu.com/p/ad159a153c3c

展开阅读全文

页面更新:2024-03-10

标签:可维护性   示意图   视图   绑定   双向   逻辑   模型   区别   机制   模式   事件   操作   业务   通知   数据   用户   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top