MVC、MVP、MVVM

MVC(Model-View-Controller)

  • 视图(View):用户界面。
  • 控制器(Controller):业务逻辑
  • 模型(Model):数据保存

  1. View 传送指令到 Controller
  2. Controller 完成业务逻辑后,要求 Model 改变状态
  3. Model 将新的数据发送到 View,用户得到反馈

 

不足之处:依赖太多

View 依赖Controller和Model

Controller依赖View和Model

Model 和View的关系虽然很弱, 但是也需要某种方式来通知View进行数据更新。

MVP(Model-View-Presenter)

MVP 模式将 Controller 改名为 Presenter,同时改变了通信方向。

将MVC里面的Model和View完全隔离开了,让他们单独变化

 

特点:

1. 各部分之间的通信,都是双向的。

2. View 与 Model 不发生联系,都通过 Presenter 传递。即View只知道Presenter, 不知道Model 。

3. View 非常薄,不部署任何业务逻辑,称为"被动视图"(Passive View),即没有任何主动性,而 Presenter非常厚,所有逻辑都部署在那里。

 

不足之处:Presenter还是需要调用View的方法,也就是说Presenter对View有依赖,这样Presenter就没办法单独做单元测试,非得等到界面做好以后才行。

可以让View层提取出接口,Presenter只依赖这个接口

 

MVVM(Model-View-ViewModel)

MVVM 模式将 Presenter 改名为 ViewModel,基本上与 MVP 模式完全一致。

唯一的区别是,它采用双向绑定(data-binding):View的变动,自动反映在 ViewModel,反之亦然。Angular 和 Ember 都采用这种模式。

在MVP模式中:让Presenter调用View的方法去设置界面,仍然需要大量的、烦人的代码。所以ViewModel就诞生了,他是一个数据结构,而view可以根据这个数据结构的变化自动随之变化

 

 

 

基于WEB的MVC(Model-View-Controller)

现在,B/S(浏览器-服务器)大行其道,用户通过浏览器发出GET,POST请求,服务器端进行处理,处理完以后生成HTML给浏览器。无论什么操作,都是对服务器端URL的访问。

如果把HTML页面比作原来桌面应用程序的View, 服务器无论是Controller还是Model都是无法远程遥控这个View进行处理的。

所以诞生了SpringMVC

不像桌面应用的MVC,这里的Model没法给View 发通知。

也不像MVP, 这里的Controller 也不会调用View的方法来设置界面。

实际上Controller 会选择一个View, 然后把模型数据“丢过去”渲染。

原来的View 变成了View Template(例如JSP , Velocity等等), 经过渲染后变成HTML发给浏览器展示给用户。这就是基于WEB的MVC

 

 

最后,由下图可以实现前后端分离

    

 

转载参考链接:

http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html

https://mp.weixin.qq.com/s/EzxfJLb5Hjxyw0_S5rThvg

MVC(Model-View-Controller)、MVP(Model-View-Presenter)和MVVM(Model-View-ViewModel)是常见的软件架构模式,用于组织和管理应用程序的代码。 1. MVC(Model-View-Controller): - Model(模型):负责存储和管理应用程序的数据和业务逻辑。 - View(视图):负责显示数据并与用户进行交互。 - Controller(控制器):处理用户输入,并根据输入更新模型和视图。 在MVC中,模型和视图是相互独立的,通过控制器来协调数据的更新和视图的更新。用户的输入首先由控制器处理,然后控制器更新模型的状态,最后模型的变化会反映在视图上。MVC模式可以有效地分离应用程序的逻辑和界面。 2. MVP(Model-View-Presenter): - Model(模型):负责存储和管理应用程序的数据和业务逻辑。 - View(视图):负责显示数据并与用户进行交互。 - Presenter(展示器):作为View和Model之间的中间人,处理用户输入并更新模型和视图。 在MVP中,Presenter负责处理用户的输入,并根据输入更新模型和视图。View只负责显示数据和将用户输入传递给Presenter,而不直接与模型交互。这种分离使得视图和模型可以独立开发和测试。 3. MVVM(Model-View-ViewModel): - Model(模型):负责存储和管理应用程序的数据和业务逻辑。 - View(视图):负责显示数据并与用户进行交互。 - ViewModel(视图模型):作为View和Model之间的中间人,处理视图的状态和行为,并将数据从模型转换为视图可用的形式。 在MVVM中,视图通过绑定(数据绑定)与视图模型关联,当模型的状态发生变化时,视图模型会自动更新视图。这种双向绑定使得视图和模型始终保持同步,减少了手动更新视图的代码量。 总结来说,MVCMVPMVVM都是用于组织和管理应用程序的代码,它们都有各自的优势和适用场景。选择哪种架构模式取决于应用程序的需求、团队的技术背景和个人偏好。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值