MVC、MVP、MVVM

本文详细探讨了MVC、MVP和MVVM三种常见的软件架构模式,对比了它们在Model、View和Controller角色上的分工,以及各自的优缺点,特别强调了MVP和MVVM在数据绑定和复用性方面的改进。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这三个框架中,M 和 V 指的都是 Model层和 View层,但是其功能会因为框架的不同而变化,

  • Model层:储存数据
  • View层:展示数据

MVC

 MVC框架图(实线表示调用和、虚线表示通知)

MVC 中的 C 指的是 Controller层。

在 Controller 层会接收用户所有的操作,并根据写好的代码进行相应的操作——触发 Model 层,或者触发 View 层,抑或是两者都触发。Controller 层触发 View 层时,并不会更新 View 层中的数据,View 层中的数据是通过监听 Model 层数据变化而自动更新的,与 Controller 层无关。

 

MVC框架流程图

MVC 框架主要有两个缺点:

  • MVC 框架的大部分逻辑都集中在 Controller 层,代码量也都集中在 Controller 层,这带给 Controller 层很大的压力,而已经有独立处理事件能力的 View 层却没有用到。
  • 还有一个问题,就是 Controller 层和 View 层之间是一一对应的,断绝了 View 层复用的可能,因而产生了很多冗余代码。

MVP

MVP框架图

MVP 中的 P 指的是 Presenter层。

在 MVC 框架中,View 层可以通过访问 Model 层来更新,但在 MVP 框架中,View 层不能再直接访问 Model 层,必须通过 Presenter 层提供的接口,然后 Presenter 层再去访问 Model 层。简单来说此时 Presenter 将数据部分与 View 完全进行了分离,通过已经写好的接口,直接完成 View 与 Presenter的通信。

  •  Model 层和 View 层都必须通过 Presenter 层来传递信息,所以完全分离了 View 层和 Model 层,也就是说,View 层与 Model 层一点关系也没有,双方是不知道彼此存在的,在它们眼里,只有 Presenter 层。
  • 因为 View 层与 Model 层没有关系,所以 View 层可以抽离出来做成组件,在复用性上比 MVC 模型好很多。

MVP框架流程图

View 层和 Model 层都需经过 Presenter 层,致使 Presenter 层比较复杂,维护起来会有一定的问题。而且因为没有绑定数据,所有数据都需要 Presenter 层进行“手动同步”,代码量比较大,虽然比 MVC 模型好很多,但也是有比较多的冗余部分。

MVVM

MVVM框架图

MVVM 中的 VM 指的是 ViewModel层。

在 MVVM 框架中,ViewModel层双向绑定了 View层 和 Model层,因此 只要VIew层的数据变化,系统会自动修改 Model 层的数据,反之同理。ViewModel,它是 View 界面的延伸,也是前端工作的延伸,可以理解为通过一个前端后台完成与数据的交互。而 Presenter 层是采用手动写方法来调用或者修改 View 层和 Model 层。

MVVM框架流程图

 双向数据绑定,可以这样理解:双向数据绑定是一个模板引擎,它会根据数据的变化实时渲染。如下图所示,View 层和 Model 层之间的修改都会同步到对方。

数据绑定概念

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值