MVC、MVP、MVVM区别
-
MVC(Model-View-Controller) 。是一种设计模式,通常用于组织与应用程序的数据流。它通常包括三个组件:模型(Model)、视图(View)和控制器(Controller)1。
- 模型(Model):负责应用程序中数据逻辑的部分,通常数据模型唯一负责在数据库中存取数据。
- 视图(View):依据模型创建,负责其中数据的显示。
- 控制器(Controller):应用程序中处理用户交互的部分,负责从视图读取数据,控制用户的输入,并向模型层发送数据。
这一设计模式广泛应用于语言的框架中,不论是java的spring 还是python 的django,flask,go的gin框架。Django中又称之为MTV (model-template-view),但实际上就是MVC,没啥区别。
MVP, 不是(Most Valuable Player)哈, 这里的 MVP 指 Model、View和 Presenter。
并不是简单的把Controller 替换成了 Presenter, 而是将View 完全独立处理,仅负责视图相关操作,处理请求进来的数据已经返回处理好的数据, 避免在View 有过多的逻辑处理,而Presenter 则专心复杂和 Model 进行数据获取相关逻辑。
MVVM,它由三部分组成:Model、View和ViewModel。
- Model:指数据模型和业务逻辑,是应用程序中处理数据和业务逻辑的部分。在WPF中,Model通常是一个类,这个类包含了数据的属性和行为。
- View:指用户界面,是应用程序中用户与计算机交互的部分。
- ViewModel:是连接Model和View的桥梁,它包含了与View相关的所有数据和业务逻辑,以及将数据绑定到View的方法。ViewModel为View提供了数据和业务逻辑的接口,使得View可以与Model进行交互。
在MVVM中,View和Model之间的联系是通过ViewModel进行处理的。ViewModel通过数据绑定将View中的控件与Model中的数据进行关联,当数据发生变化时,View中的控件也会相应地更新。同时,ViewModel也处理了用户在View中进行的交互操作,将用户的输入转化为业务逻辑进行处理,并将处理结果反馈给View,使得用户可以获得更好的交互体验。
相对于传统的MVC架构模式,MVVM更加强调View和Model之间的松散耦合,通过ViewModel进行数据绑定和业务逻辑处理,使得开发人员可以更加专注于业务逻辑和数据的开发,而设计人员可以更加专注于页面设计。MVVM框架便是
前后端分离框架发展史上的一次思想的完全变革。它是将
数据模型双向绑定的思想作为变革的
核心,即
View的变动,自动反映在
ViewModel上面,而
ViewModel的变动也会随即反映在
View上面,从而实现
数据与模型的双向绑定
MVP 和 MVVM 共同点在于,完全断开了View 和 Model 直接的联系,起到了很好的中间桥梁作用。