#UI層
專案主要實現了4部分功能:
- Tasks 用於管理任務列表
- TaskDetails 用於顯示和刪除任務
- AddEditTask 用於建立和編輯任務
- Statistics 顯示與任務相關的統計資訊
具體實現
每個功能都是依照如下方式實現:
- 定義一個連線View和Presenter的契約類Contract
- 建立一個Presenter,並實現契約類中的Presenter介面
- Activity中例項化Fragment和Presenter。
- Fragment中實現BaseView介面
A presenter typically hosts business logic associated with a particular feature, and the corresponding view handles the Android UI work. The view contains almost no logic; it converts the presenter's commands to UI actions, and listens for user actions, which are then passed to the presenter.
Presenter通常託管這與特定功能相關的業務邏輯,響應的View層處理Android UI工作。檢視層幾乎不包含邏輯;檢視層把Presenter層中的命令轉化為UI操作,而且檢視層去監聽使用者的操作,傳遞給Presenter層。
架構圖
專案中包含了Presenter,Repository和DataSource,實現層與層之間的解耦,同時方便單元測試。
按照Android-CleanArchitecture架構圖來說,這裡只包含了Presentation Layer和Data Layer兩層,並未包含Domain Layer。其依賴規則是隻能上層依賴下層。
Data層
App需要的資料都是通過Data層中的Repository模組提供,由它去完成訪問網路和資料庫等。
使用Repository將業務層與具體的查詢邏輯分離,Repository的實現類主要職責就是儲存查詢資料,一個更簡單的解釋就是你可以把Repository的實現類當成是一個Java容器(Collections),可以從中獲取或儲存資料(add/remove/etc),他對資料來源進行了抽象。Data層的Repository只需要實現相關介面,並提供相關服務即可。
如上圖,Repository介面定義了getUserById、getAllUsers等方法,其實現類對介面做具體實現,而真正的操作可能是通過Dao才能訪問資料庫,或者通過Okhttp訪問網路url獲取資料。
回到todo專案中:
- 介面TasksDataSource 規範運算元據的方法
- 類TasksRemoteDataSource 實現TasksDataSource 介面,實現真正運算元據的邏輯。
- 類TasksRepository 實現TasksDataSource介面,持有TasksRemoteDataSource物件呼叫各個方法。
歡迎交流!