Google的MVP Style

無論是架構還是設計模式,其目的都是為了解耦耘拇,解耦的手段即為分離關注點撵颊,而分離關注點的通用做法就是分層。分層之后惫叛,層與層之間的關系和通信則成為了架構的主要焦點倡勇,因為我們看到大多數的架構,M和V都有嘉涌,但是鏈接M和V的中間層則各不相同妻熊,遇上MVC就鹽化出了MVP,MVVM這些架構仑最。

1.什么是VMP

MVP全稱Model–View–Presenter扔役,是由MVC衍生來的一種輕量級的架構,被廣泛用于便捷化的單元測試和在呈現邏輯中改善分離關注點警医。

M:模型層亿胸,模型不僅僅指數據,還包括處理邏輯预皇〕扌基本上,所有的業(yè)務邏輯都算Model深啤,通常Model層也是最厚的一層拗馒。Model層于中間層的通信方式通常采用類似于監(jiān)聽者模式的回調機制來獲取數據的更新,這對于Android開發(fā)是很適用的溯街,因為Android的費時操作都要求在異步線程來完成诱桂。

P:接受來自視圖層的事件洋丐,從Model獲取數據,即擔當所謂的中間人挥等。Presenter的設計不要過于龐大友绝,針對一個頁面設計即可。在谷歌Demo中便有Contract的概念肝劲,定義一對View和Presenter迁客,這個Contract便是這對V-P的鏈接橋梁。

和MVC一樣辞槐,MVP也是用來分離數據和模型的掷漱。不夠過它分離的更徹底,,如圖:

在MVP中M和V不進行交互榄檬,所有的信息交流都通過一個名為Presenter的“中間人”角色卜范。

2.Google是如何用MVP的

https://github.com/googlesamples/android-architecture

Google架構藍圖從代碼結構、體系架構鹿榜、測試性海雪、可維護性設計了一系列Demo,以為我們在開發(fā)中可能遇到的問題提供參考舱殿。

todo-mvp:

這是一個基本結構的MVP范例奥裸,以下的Demo都是基于此擴展的。View沒有任何邏輯沪袭,Repository負責向本地及遠端獲取數據并通知Presenter數據更新湾宙,Presenter依然作為所謂的中間人角色,控制事件的分發(fā)和數據回調等信息交互邏輯枝恋。

todo-mvp-loader

Loader即Android的加載器创倔,它夾在Presenter和Repository之間,接管了獲取數據的工作焚碌。有了這個Loader畦攘,便能利用其異步加載和實時更新數據的特性。

mvp-databinding

https://developer.android.com/topic/libraries/data-binding/index.html#data_objects

databinding是基于數據綁定的一個實現十电,有一點類似于MVVM知押,但是也不盡相同,因為Model和ViewModel層并沒有綁定鹃骂,View和ModelView也沒有雙向綁定台盯。在這里ModelView只是接管View的更新,主要是用了databinding的數據綁定畏线,當然databinding比這強大得多静盅,你可以完全去掉Presenter,讓它轉發(fā)事件寝殴,并讓數據綁定進來蒿叠,寫一個完全的MVVM明垢。

MVVM等幾種架構:http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html

mvp-clean

Clean模式國內譯為自潔模式,是谷歌大道歸一的設計思想市咽,在這個模型例痊银,程序的每一個區(qū)域用不同的同心圓來表示,外圍的圓代表機制施绎,內部的圓代表策略溯革。其依賴規(guī)則是向內依賴,即只允許外部對內部依賴谷醉,內部圓不能有任何外部圓的聲明:https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean-architecture.html

谷歌的示例中致稀,引入clean模式后新增了一個DomainLayer,里面包含了大量的用例俱尼,用例的好處的是復用代碼并能提高代碼的可讀寫豺裆,用例包含了用戶的使用場景,容易對業(yè)務跟蹤号显。最重要的是在clean模式中用例是相當孤單的一層,要求用例和第三方框架躺酒,如Android SDK押蚤,以及業(yè)務的規(guī)則沒有任何依賴。另外再明顯不過的羹应,用例很好寫測試用例揽碘。通過這些用例,Presenter的工作被分擔出去了园匹,業(yè)務也更快清晰了雳刺。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市裸违,隨后出現的幾起案子掖桦,更是在濱河造成了極大的恐慌,老刑警劉巖供汛,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件枪汪,死亡現場離奇詭異,居然都是意外死亡怔昨,警方通過查閱死者的電腦和手機雀久,發(fā)現死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來趁舀,“玉大人赖捌,你說我怎么就攤上這事阎毅∪ǘ海” “怎么了举塔?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵俭驮,是天一觀的道長。 經常有香客問我悦荒,道長唯欣,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任搬味,我火速辦了婚禮境氢,結果婚禮上,老公的妹妹穿的比我還像新娘碰纬。我一直安慰自己萍聊,他們只是感情好,可當我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布悦析。 她就那樣靜靜地躺著寿桨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪强戴。 梳的紋絲不亂的頭發(fā)上亭螟,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天,我揣著相機與錄音骑歹,去河邊找鬼预烙。 笑死,一個胖子當著我的面吹牛道媚,可吹牛的內容都是我干的扁掸。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼最域,長吁一口氣:“原來是場噩夢啊……” “哼谴分!你這毒婦竟也來了?” 一聲冷哼從身側響起镀脂,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤牺蹄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后狗热,有當地人在樹林里發(fā)現了一具尸體钞馁,經...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年匿刮,在試婚紗的時候發(fā)現自己被綠了僧凰。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡熟丸,死狀恐怖训措,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤绩鸣,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布怀大,位于F島的核電站,受9級特大地震影響呀闻,放射性物質發(fā)生泄漏化借。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一捡多、第九天 我趴在偏房一處隱蔽的房頂上張望蓖康。 院中可真熱鬧,春花似錦垒手、人聲如沸蒜焊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽泳梆。三九已至,卻和暖如春榜掌,著一層夾襖步出監(jiān)牢的瞬間优妙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工憎账, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留鳞溉,地道東北人。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓鼠哥,卻偏偏與公主長得像,于是被迫代替她去往敵國和親看政。 傳聞我的和親對象是個殘疾皇子朴恳,可洞房花燭夜當晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,858評論 25 707
  • 轉載至:http://www.reibang.com/p/9a6845b26856 “Android MVP 詳解...
    SnowDragonYY閱讀 10,320評論 5 241
  • 作者:李旺成 時間:2016年4月3日 “Android MVP 詳解(下)”已經發(fā)布,歡迎大家提建議允蚣。 MVP ...
    diygreen閱讀 128,848評論 86 1,321
  • 人笨學的慢啊于颖。。抓緊學習MVP 網上MVP的學習資料也是多如牛毛嚷兔,來看看谷歌爸爸是怎么教我們MVP的吧 項目介紹 ...
    hongjay閱讀 2,669評論 1 21
  • 默默含悲的樹森渐,一棵棵 陸陸續(xù)續(xù)往后黯然而去 疾速轉動的車輪 碾過冰冷的水泥路面 碾過兒女們百折千回的愁腸 揮淚而鋪...
    金指尖的花園閱讀 270評論 0 5