简单分析MVVM

最常见的客户端框架:

MVC: Model-View-Controller
MVP: Model-View-Presenter
MVVM: Model-View-ViewModel
在MVC里面,Model是数据模型,是应用程序中用于处理应用程序数据逻辑的部分;View是视图或者说就是界面需要去展示的东西,Controller是用来控制Model的读取、存储,以及如何在View上展示数据,更新数据的逻辑控制器。
MVP:Model-View-Presenter,MVP中view并不是直接使用Model,它们之间的通信是通过Presenter(MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会直接从Model中读取数据而不是通过Controller。
在MVC里,view是可以直接访问Model的,从而,View里会包含Model信息,在MVC模型里,更关注Model的不变,而同时有多个对Model的不同显示,即View。所以,在MVC模型里,Model不依赖于View,但是View是依赖于Model的,不仅如此,英文有一些业务逻辑在view里实现了,导致要更改view也是比较困难的。虽然MVC中的view的确可以访问Model,但是我们不建议在View中依赖Model,而是要求尽可能把所有业务逻辑都放在Controller中处理,而view只和Controller交互。
这里写图片描述
这里写图片描述
在MVP里,Presenter完全把Model和View进行了分离,主要程序逻辑在Presenter里实现。而Presenter与具体的View是没有直接关系的,而是通过定义好的接口进行交互,从而使得在变更view时候可以保持presenter的不变,即重用。
MVP的优点
1、模型与视图完全分离,我们可以修改视图而不影响模型
2、可以更高效的使用模型,因为所有的交互都发生在一个地方—presenter内部
3、我们可以将一个presenter用于多个视图,而不需要改变presenter的逻辑,视图的变化总是比模型变化频繁。
4、如果我们把逻辑放在presenter中,那么我们就可以脱离用户接口来测试这些逻辑(单元测试)
MVP缺点
由于对视图的渲染放在了Presenter中,所以视图和Presenter的交互会过于频繁。还有一点需要明白,如果presenter过多地渲染了视图,往往会使得它与特定的视图的联系过于紧密。一旦视图需要变更,那么Presenter也需要变更了。比如说,原本用来呈现html的Presenter现在也需要用于呈现pdf了,那么视图很有可能也需要变更。
MVVM(Model-view-viewmodel),它是将“数据双向绑定”的思想作为核心,因此在view和model之间没有联系,通过ViewModel进行交互,而且Model和ViewModel之间的交互是双向的,因此视图的数据的变化会同时修改数据源,而数据源数据的变化也会立即反应到View上。
这里写图片描述
MVVM的优点
1、低耦合。视图(view)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的“View”上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。
2、可重用性。你可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑。
3、独立开发。开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计。
4、可测试。界面素来是比较难于测试的,而现在测试可以针对ViewModel来写。
基本工作原理
MVC:
1.View传送指令到Controller
2.Controller完成业务逻辑后,要求Model改变状态
3.Model将新的数据发送到View,用户得到反馈。
接受用户指令时,MVC可以分为两种方式,一种是通过View接受指令,传递给Controller。另一种是直接通过controller接受指令。
MVP
1.View与Model不发生联系,都是通过presenter传递,各部分之间的通信都是双向的。
2.View非常薄,不部署任何业务逻辑,称为“被动视图”(Passive View),即没有任何主动性,而Presenter非常厚,所有逻辑都部署在那里。
MVVM
MVVM与MVP模式基本一致,唯一的区别是,它采用双向绑定(data-binding):view的变动,自动反映在ViewModel,反之亦然。

参考自:百度百科(MVC、MVP、MVVM)
作者:rookie.he(kuke_kuke)
博客链接:http://blog.csdn.net/qq_33599109
欢迎关注支持,谢谢!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值