該示例(TODO-MVP)是后續(xù)各種示例演變的基礎,它主要演示了在不帶架構性框架的情況下實現(xiàn)M-V-P模式。其采用手動依賴注入的方式來提供本地數(shù)據(jù)源和遠程數(shù)據(jù)源倉庫。異步任務通過回調(diào)處理。
注意:MVP中View的概念是有所不同的:
- android.view.View類我們叫它 "Android View"
- MVP中從P接收命令的東西我們叫它”View”,后文說了,就是Fragment
Fragment
采用Fragment作為視圖的載體有兩個原因:
- Activity 和 Fragment分離恰好適合用來實現(xiàn)MVP:Activity是創(chuàng)建和連接View與Presenter的總控制器
- 適配平板設備的布局或多視圖屏幕的場景都可利用Fragment框架的優(yōu)勢
關鍵概念
該App(指官方TODO-MVP示例)中有四個功能:
- Tasks
- TaskDetail
- AddEditTask
- Statistics
每個功能擁有下列代碼分工:
- 定義VIew和Presenter之間的“契約”接口
- 一個Activity類負責創(chuàng)建Fragment和Presenter
- 一個Fragment類實現(xiàn)VIew接口
-
一個Presenter類實現(xiàn)Presenter接口
一般來說,業(yè)務邏輯存在于Presenter中并依賴View完成Android中UI相關的工作。
View中幾乎不包含邏輯:它將Presenter的命令轉(zhuǎn)換為UI動作,并監(jiān)聽用戶動作傳遞給Presenter。
“契約”接口用于定義View和Presenter之間的聯(lián)系。
(譯注:
有人立馬就問到M哪去了,官方實例里M是輕的,與Repository和DataSource概念分離。
延伸閱讀
- ssh框架
2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍牙鎖
2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe
2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標分割】
2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞
2017-07-26
- 從棧不平衡問題 理解 calling convention
2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明
2017-07-26
- Swift實現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解
2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應用分析
2017-07-26
- 集合結合數(shù)據(jù)結構來看看(二)
2017-07-26
學習是年輕人改變自己的最好方式