Android-Architecture之todo-mvp

todo-mvp官方地址

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層。

架構圖

mvp.png

項目中包含了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只需要實現相關接口,并提供相關服務即可。

Respository.png

如上圖,Repository接口定義了getUserById、getAllUsers等方法,其實現類對接口做具體實現,而真正的操作可能是通過Dao才能訪問數據庫,或者通過Okhttp訪問網絡url獲取數據。

回到todo項目中:

  • 接口TasksDataSource 規范操作數據的方法
  • 類TasksRemoteDataSource 實現TasksDataSource 接口,實現真正操作數據的邏輯。
  • 類TasksRepository 實現TasksDataSource接口,持有TasksRemoteDataSource對象調用各個方法。


    Class Diagram.png

歡迎交流!
Clean架構探討

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容