开发工具:
文件大小: 271kb
下载次数: 0
上传时间: 2019-09-01
详细说明:Android开发,MVC MVP和MVVM设计模式实现,以及他们的优缺点总结。3、VieW和Mode的同步消息是通过观察者模式进行,而同步操作是由
VieW自己请求Mode的数据然后对视图进行更新。
MVC的优缺点
优点:
1、把业务逻辑仝部分离到 Contro1er中,模块化程度高。当业务逻辑
变更的时候,不需要变更View和Mode1,只需要 Contro1ler换
成另外一个
Contro11er就行了( Swappable Contro1ler)
2、观察者模式可以做到多视图同时更新。
缺点:
1、 Contro1ler测试困难。因为视图同步操作是由View自己执行,而
view只能在有UI的环境下运行。在没有U环境下对 Contro1ler进行
单元测试的时候,
Contro1ler业务逻辑的正确性是无法验证的: Contro11er更新
Model的时候,无法对View的更新操作进行断言。
2、View无法组件化。ⅵieN是强依赖特定的 Model的,如果需要把这
VieW抽出来作为一个另外一个应用程序可复用的组件就困难了
因为不同程序的的 Domain mode1是不一样的
MVP
MVP其实是MVC的一种演进版本,它更简单,将MVC中的 Controller改为了 Presenter
view通过接口与 Presenter进行交互,降低耦合,方便进行单元测试
view:负责绘制U元素、与用户进行交互( Activity、View、 Fragment都可以做为view层);
Model:对数据的操作、对网络等的操作,和业务相关的逻辑处理;
Presenter:作为View与Mode交互的中间纽带,处理与用户交互的逻辑。可以把 Presenter
理解为一个中间层的角色,它接受Mode层的数据,并且处理之后传递给View层,还需要
处理vieW层的用户交互等操作。
Presenter
Observer Sync
Events
Manipulates-、Pu/sul
b
Interfaces Pass calls to
ew
Model
User Interaction
User
关键点:
1、View不再负贲同步的逻辑,而是由 Presenter负责。 Presenter中既有业务逻辑也有同步逻辑
2、ⅵiew需要提供操作界面的接∏给 Presenter进行调用。(关键)
对比在MVC中, Controller是不能操作view的,VieW也没有提供相应的接口;而在MVP
当中, Presenter可以操作Ⅴiew,Ⅴiew需要提供一组对界面操作的接口给 Preseηter进行调
用;Mode仍然通过事件广播自己的变更,但由 Presenter监听而不是VieW。
MVP( Passive view)的优缺点
优点
1、便于测试。 Presenter对view是通过接∏进行,在对 Presenter进行不依赖UI环境的单元测试的时
候。可以通过Mock一个View对象,这个对象只需要实现了view的接口即可。然后依赖注入到 Presenter
中,单元测试的时候就可以完整的测试 Presenter业务逻辑的正确性。
2、View可以进行组件化。在MVP当中,View不依赖Mode1。这样就可以让View从特定的业务场景中朏
离出来,可以说ⅵiew可以做到对业务逻辑完全无知。它只需要提供一系列接∏提供给上层操作。这样就可
以做高度可复用的view组件
缺点:
1、 Presenter中除了业务逻辑以外,还有大量的view->Mode1,Mode1- >view的手动同步逻辑,造成
Presenter比较笨重,维护起来会比较困难。
MVVM
MVVM模式( Model-VieW- ViewMode模式),和MVP模式相比,MWM模式用
View model替换了 Presenter,其他层基本上与MVP模式一致, View Mode可以理解成
是view的数据模型和 Presenter的合体。
MWM采用双向绑定(data- binding):view的变动,自动反映在 View Model,反之亦然,
这种模式实际上是框架替应用开发者做了一些工作(相当于 View mode类是由库帮我们生
成的),开发者只需要较少的代码就能实现比较复杂的交互
View Model
Binder
ManIpulates
Pass calls to\
View
Model
User Interaction
User
MvVM的调用关系
MVVM的调用关系和MVP一样。但是,在 Viewmode当中会有一个叫 Binder,或者是
Data- binding engine的东西。以前全部由 Presenter负责的view和 Model之同数据同步操
作交由给 Binder处玛。你只需要在Ⅶiew的模版语法当中,指令式地声眀ew上的显示的
内容是和Mode的哪块数据绑定的。当 Viewmodel对进行Mode更新的吋候, Binder
会自动把数据更新到vieW上去,当用户对VieW进行操作(例如表单输入), Binder也会
自动把数据夏新到 Model上去。这种方式称为:Two- way data- binding,双向数据绑定。
可以简单而不恰当地理解为一个模版引擎,但是会根据数据变吏实时渲染
关键点:
MVW把V1ew和Mode1的同步逻辑自动化了。以前 Presenter负责的view和 Model同步不再手动地进行
操作,而是交由框架所提供的 Binder进行负责
只需要告诉 Binder,View显示的数据对应的是Mode1哪一部分即可
MvVM的优缺点
优点:
1、提高可维护性。解决了MVP大量的于动View和 Model
同步的问题,提供双向绑定机制。提高了代码的可维护性。
2、简化测试。因为同步逻辑是交由 Binder做的,View跟
着 Model同时变更,所以只需要保证 Model的正确性,VieW
就正确。大大减少了对View同步更新的测试。
缺点:
1、过于简单的图形界面不适用,或说牛刀杀鸡。
2、对于大型的图形应用程序,视图状态较多, ViewMode1
的构建和维护的成本都会比较高。
3、数据绑定的声明是指令式地写在View的模版当中的,
这些内容是没办法去打断点 debug的。
结语
可以看到,从MVC->MvP->MVM,就像一个打怪升级的过程。后者解决了前者遗留的问
题,把前者的缺点优化成了优点。同样的Demo功能,代码从最川始的堆文件,优化成
了最后只需要20几行代码就完成。MV模式之间的区分还是蛮清晰的,希望可以给对这些
模式理解比较模湖的同学带米一些参考和思路。
收藏
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.