您的位置:首页 > 其它

浅谈MVC,MVP,MVVM区别联系

2017-12-21 23:07 232 查看

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:



View 传送指令到 Controller

Controller 完成业务逻辑后,要求 Model 改变状态

Model 将新的数据发送到 View,用户得到反馈

MVP:



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

View 与 Model 不发生联系,都通过 Presenter 传递。

Presenter 可以理解为松散的控制器,其中包含了视图的 UI 业务逻辑,所有从视图发出的事件,都会通过代理给 Presenter 进行处理;

Presenter 也通过视图暴露的接口与其进行通信

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

MVVM:(宏观上与MVP一样)



Model:代表你的基本业务逻辑

View:显示内容

ViewModel:将前面两者联系在一起的对象

ViewModel在改变内容之后通知binding framework内容发生了改变。然后framework自动更新和那些内容绑定的view

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



区别:

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区别和联系思维导图-

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mvp mvc mvvm