mvvm模式和mvc的区别_MVC,MVVM,MVP是指什么,它们之间有啥区别

MVC

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写。

a106814eb38f207f98d4f9c715f371ee.png
  • Model是指数据模型,是对客观事物的抽象。主要是数据、业务逻辑和业务规则。
  • View是指视图,也就是呈现给用户的一个界面。
  • Contorller指的是控制器,主要负责与model和view打交道。负责用户的请求和响应。

这一个设计,相信很多人都用过spring-mvc,这个框架就是mvc模式的一种实现,就不多说了。

MVVM

MVVM是Model-View-ViewModel的简写,本质上就是MVC 的改进版,即模型-视图-视图模型。

c2700bf7ced62674b49b6890447d4686.png
  • Model,同mvc模式的模型层一样,是后端传递的数据。
  • View,视图层。
  • ViewModel,mvvm模式的核心,它是连接view和model的桥梁。

ViewModel既然是核心,那么肯定有着至关重要的作用,有两个方向:

1、将Model转换成View,实现方式是数据的绑定。

2、将View转换成Model,将页面转换成后端的数据,实现方式是DOM 事件监听。

以上的两个方向称为数据双向绑定。所以说在MVVM模式中,视图和模型层是不能直接通信的,都是通过ViewModel来建议通信。ViewModel通过观察者来监听数据的变化。

MVVM 将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开,这个不用我们管,人家已经做好了。

MVVM相比较MVC而言,做到了数据响应式编程,将UI和数据解耦。优点:

  • 低耦合。ViewModel可以绑定到不同的"View"上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。
  • 可重用性。可以把多个视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑。

MVVM在一定程度上增加了系统结构的实现的复杂性,View依赖于特定的Model,无法组件化,视图与控制器之间的联系过于紧密,难以独立运用。

常见的MVVM框架有React,Vue,Angular。在前端来说,特别流行。

MVP

MVP是Model-View-Presenter的缩写,Model提供数据,View负责显示,Presenter负责逻辑的处理。在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部。

842611009697e48cbac50c979ff611f2.png

可以看出,MVP通过Presenter把Model和View进行了分离,主要的程序逻辑交给了Presenter实现。

  • Presenter也指交互中间人。作为沟通View和Model的桥梁,它从Model层检索数据后,返回给View层,使得View和Model之间没有耦合,也将业务逻辑从View角色上抽离出来。

优点:

  • 模型与视图完全分离,修改视图而不影响模型。
  • 可以将一个Presenter用于多个视图,而不需要改变Presenter的逻辑。
  • 便于测试。

但是MVP的明显缺点是增加了代码的复杂度,代码中会存在大量的视图和模型切换同步代码,会导致Presenter臃肿,维护困难。

MVP通常是应用于安卓的开发模式。

你们还接触过其他的编程通信模式吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值