android UI设计MVVM设计模式
来源:互联网 发布:手机辐射测试软件 编辑:程序博客网 时间:2024/05/15 21:29
链接:https://www.zhihu.com/question/30976423/answer/50224601
来源:知乎
在传统的框架中,提的最多的是MVC和MVP。其中MVC出现与上世纪70年代,在三十多年的工程实践中,MVC充分证明了它的成功,同时在漫长的时间中演变出了许多变种,其中也包括MVP.
MVC和MVP最大的差别在与控制层对于整个框架的控制力上。Android中经常会出现数千行的Activity代码,究其原因,我认为是Android中纯粹作为View的各个XML视图功能太弱,Activity基本上都是View和Controller的合体,既要负责视图的显示又要加入控制逻辑,承担的功能过多,代码量大也就不足为奇。所以我认为在Android上,MVP优于MVC,是因为我们需要更强力的控制层最大程度上分担Activity中逻辑的部分,具体的思想可以参考我的博客:
Android App整体架构设计的思考(一)
MVVM可以算是MVP的升级版,其中的VM是ViewModel的缩写,ViewModel可以理解成是View的数据模型和Presenter的合体,ViewModel和View之间的交互通过Data Binding完成,而Data Binding可以实现双向的交互,这就使得视图和控制层之间的耦合程度进一步降低,关注点分离更为彻底,同时减轻了Activity的压力,三者之间的差别如下如所示:
<img src="https://pic2.zhimg.com/2f9e4ee7d9616257ab41de204c06ffd5_b.jpg" data-rawwidth="765" data-rawheight="287" class="origin_image zh-lightbox-thumb" width="765" data-original="https://pic2.zhimg.com/2f9e4ee7d9616257ab41de204c06ffd5_r.jpg">
VM中View的数据模型每个页面当然只有一套,但是Presenter,我建议根据逻辑拆开。
MVC和MVP最大的差别在与控制层对于整个框架的控制力上。Android中经常会出现数千行的Activity代码,究其原因,我认为是Android中纯粹作为View的各个XML视图功能太弱,Activity基本上都是View和Controller的合体,既要负责视图的显示又要加入控制逻辑,承担的功能过多,代码量大也就不足为奇。所以我认为在Android上,MVP优于MVC,是因为我们需要更强力的控制层最大程度上分担Activity中逻辑的部分,具体的思想可以参考我的博客:
Android App整体架构设计的思考(一)
MVVM可以算是MVP的升级版,其中的VM是ViewModel的缩写,ViewModel可以理解成是View的数据模型和Presenter的合体,ViewModel和View之间的交互通过Data Binding完成,而Data Binding可以实现双向的交互,这就使得视图和控制层之间的耦合程度进一步降低,关注点分离更为彻底,同时减轻了Activity的压力,三者之间的差别如下如所示:
<img src="https://pic2.zhimg.com/2f9e4ee7d9616257ab41de204c06ffd5_b.jpg" data-rawwidth="765" data-rawheight="287" class="origin_image zh-lightbox-thumb" width="765" data-original="https://pic2.zhimg.com/2f9e4ee7d9616257ab41de204c06ffd5_r.jpg">
VM中View的数据模型每个页面当然只有一套,但是Presenter,我建议根据逻辑拆开。
0 0
- android UI设计MVVM设计模式
- android设计模式MVVM
- UI设计模式之:MVVM模式经典
- Android DataBinding(MVVM设计模式)
- android中mvvm设计模式
- Android设计模式之MVVM
- android UI设计模式
- Android 6.0 通话UI设计模式分析(MVC\MVP\MVVM)
- Android DataBinding库(MVVM设计模式)
- 【Android】DataBinding库(MVVM设计模式)
- Android DataBinding库(MVVM设计模式)
- 学习android的MVVM设计模式
- Android DataBinding库(MVVM设计模式)
- Android DataBinding库(MVVM设计模式)
- android设计模式(MVC MVP MVVM)
- MVVM设计模式
- MVVM设计模式
- MVVM设计模式
- C# 中的委托和事件
- 《ASP.NET5》Windows 7下Visual Studio 2015安装记录
- iOS --- 为UISlider添加点击事件
- POJ 3281_Dining
- meta标签的介绍
- android UI设计MVVM设计模式
- Android App整体架构设计的思考
- bzoj3171 最长上升子序列 Treap&Lis
- waiting for X server to shut down Server terminated successfully(0) ,closing log file
- 【设计模式】 装饰者与IO/Collection框架
- Fragment之一:封装及生命周期
- cocos-js 对js的容错处理模式
- 5个最佳的Android测试框架(带示例)
- Html中的map标签