todo-MVP
該版本的應用程序稱為todo-mvp,并為此項目中的其他示例提供了基礎。該樣本旨在:
- 提供基本的Model-View-Presenter(MVP)架構,而不使用任何架構框架。
- 作為比較和對比本項目其他樣本的參考點
** 注意 **:該項目在所有存儲庫分支中使用以下命名約定,以區分View類和MVP視圖:
- “Android View”是指android.view.View類。
- 從MVP中的演示者接收命令的視圖被稱為“視圖”。
你需要知道的
在瀏覽此示例之前,您可能會發現熟悉以下主題很有用:
- 項目project README
- The MVP architecture
todo-mvp示例使用以下依賴關系:
- Common Android support libraries --- com.android.support。*命名空間中的軟件包提供向后兼容性和其他功能。
- Android Testing Support Library - 用于支持UI測試的框架,使用Espresso和AndroidJUnitRunner。
-
Mockito 用于實施單元測試的框架。
*Guava - 一組Google的Java核心庫,通常用于Android應用程序。
設計應用
所有版本的Android藍圖應用程序都包含與簡單易用型應用程序相同的常見功能。該應用程序由四個UI screen 組成:
- Tasks 用于管理任務列表。
- TaskDetail 用于讀取或刪除任務
- AddEditTask - 用于創建或編輯任務。
- Statistics - 相關任務的統計數據。
在這個版本的應用程序中,以及基于它的其他版本,每個屏幕都是使用以下類和接口實現的:
演示者通常承載與特定功能相關聯的業務邏輯,相應的視圖處理Android UI工作。這個觀點幾乎沒有任何邏輯;它將演示者的命令轉換為UI動作,并監聽用戶操作,然后傳遞給演示者。
實現應用程序
每個版本的應用程序使用不同的方法實現相同的功能來展示和對比各種架構設計。例如,該版本采用以下方法來解決常見的實現問題:
- 此示例使用產品風格(product flavors)在編譯時替換模塊,為手動和自動測試提供假數據。
- 此版本使用回調來處理異步任務。
另請注意,這個版本的應用程序使用片段,這有兩個原因:
- 使用這兩種活動和片段,可以更好地分離出對MVP實現的擔憂。在此版本的應用程序中,活動是創建和連接視圖和演示者的整體控制器
- 片段的使用支持多個視圖的平板電腦布局或UI屏幕。
該版本的應用程序包括一些包含演示者,存儲庫和數據源的單元測試。該示例還包括依賴于假數據的UI測試,并通過依賴注入來提供假模塊。有關使用依賴注入來進行有關測試的更多信息,請參閱Leveraging product flavors in Android Studio for hermetic testing
維護應用程序
該示例包括與不使用特定架構的更傳統項目相比較的類和接口(如演示者和合同),可增加代碼行數。
下表總結了用于實現此版本應用程序的代碼量。您可以將其作為與本項目中每個其他示例提供的類似表進行比較的基礎。
Language | Number of files | Blank lines | Comment lines | Lines of code |
---|---|---|---|---|
Java | 46 | 1075 | 1451 | 3451 |
XML | 34 | 97 | 337 | 601 |
Total | 80 | 1172 | 1788 | 4052 |