第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

續(xù)談MVP與MVVM

標簽:
Android

0. 前言

之前写过Philm项目源码分解析(3): Presenter与Model的设计 ,Philm项目源码分解析(2): View与Presenter的设计Philm项目源码分解析(1): 基本概念分析Philm MVP架构的实现,最近在接触到一些关于clean architecture的话题后,又仔细读了一些关于MVP以及MVVM的文章,觉得当时的一些理解不够深入,因此针对应用架构的理论部分重新做出总结。

1. Model-View-Presenter

Martin Fowler的这篇Retirement note for Model View Presenter Pattern文章明确表明了,这个模式已经“退休”了。作为MVC模式的变形之一,它被重新归纳为了MVC模式的两种变形:Passive View和Supervisor controller。

1.1 Passive View

Passive View是MVC模式的一种变形。对于UI而言,它被分为负责显示的View和接收用户交互的Controller。Passive View是一个完全被动的View,不负责UI更新,因此也不依赖Model。

这种模式强调的是View与Model之间的独立,Controller负责全部的View与Model的同步工作,所有的消息都需要通过Controller传递。

1.2 Supervising Controller

Supervising Controller模式强调Controller只处理复杂逻辑和部分与View和Model之间的同步。Controller中尽可能减少View与Model的同步工作,将其转交数据绑定来实现,Controller只处理同步机制无法处理的复杂的交互和同步。因此,这种模式中View与Model需要直接通信,存在依赖关系。

2. Model-View-ViewModel

ViewModel可以同时和多个Domain Model交互,它并不是一个特定Domain Model为了适合View而构建的外观模式。我们可以认为ViewModel是一个特殊的,不依赖于系统GUI框架的View。此外,需要注意的是。一个ViewModel可以应用于多个View,但是一个View只能拥有一个ViewModel。

所有的事件和响应逻辑都需要ViewModel来处理,因此它的View变得很简单,这与Passive View模式很相似。它与Passive View的区别在于: ViewModel中不包含控件,控件需要依靠自己获取ViewModel中的状态。而Passive View中的Controller可以包含控件,这降低了控件自己获取状态带来的风险,但是,Passive View也因此引入了新的问题:它依赖于系统GUI控件,无法独立进行测试。

3.小结

总结一下3种模式的特点:
1) Passive View: 强调View与Model的独立,Controller负责全部的同步工作。
2) Supervising Controller:强调Controller中只处理复杂逻辑,尽可能少的负责View与Model间的同步工作。View与Model相互依赖。
3)MVVM:强调ViewModel作为一个View的抽象层,其与实际的View一对多的关系,同时其自身不依赖系统控件,方便独立测试。

原文链接:http://www.apkbus.com/blog-705730-60837.html

點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學(xué)

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消