浅谈MVC,MVP,MVVM区别联系

MVC,MVP,MVVM区别联系


MVC: Model-View-Controller (模型-视图-控制器)
MVP: Model-View-Presente (模型-视图-层现器)
MVVM:Model-View-ViewModel(模型-视图-视图模型)

联系:
  • MVP是由MVC演变而来,把MVC的V层与Model层解耦,让View层和Model层通过P层进行数据交互,两者不互相访问;
  • MVVM是由MVP演变而来,它采用View和ViewModel双向绑定; 让View和ViewModel的变动都会自动反应在各自的层级;使得开发者不用处理接收事件和View的更新工作,由框架的逻辑实现;
视图化解释

MVC:
enter image description here

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

MVP:
enter image description here

  • 各部分之间的通信,都是双向的。
  • View 与 Model 不发生联系,都通过 Presenter 传递。
  • Presenter 可以理解为松散的控制器,其中包含了视图的 UI 业务逻辑,所有从视图发出的事件,都会通过代理给 Presenter 进行处理;
  • Presenter 也通过视图暴露的接口与其进行通信
  • View 非常薄,不部署任何业务逻辑,称为”被动视图”(Passive View),即没有任何主动性,而 Presenter非常厚,所有逻辑都部署在那里。

MVVM:(宏观上与MVP一样)
enter image description here

  • Model:代表你的基本业务逻辑
  • View:显示内容
  • ViewModel:将前面两者联系在一起的对象
  • ViewModel在改变内容之后通知binding framework内容发生了改变。然后framework自动更新和那些内容绑定的view

在 MVVM 的实现中,还引入了隐式的一个 Binder 层,而声明式的数据和命令的绑定在 MVVM 模式中就是通过它完成的。
enter image description here

区别:

MVC 与 MVP 的区别:
MVC中是允许Model和View进行交互的,而MVP中很明显,Model与View之间的 交互由Presenter完成。
Presenter与View之间的交互是通过接口的。
MVC中V对应的是布局文件,MVP中V对应的是Activity。

MVVM与MVP的区别:

它采用双向绑定(data-binding):View的变动,自动反映在 ViewModel,反之亦然。这样开发者就不用处理接收事件和View更新的工作,框架已经帮你做好了。

MVVM的好处:

低耦合,可重用,独立开发(模块化开发,预留接口交互即可),方便测试(可以针对ViewModel来写测试)

区别和联系脑图:

MVC,MVP,MVVM区别和联系思维导图-

enter image description here

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值