每次看MVC架構的項目時,都會在比較臃腫的Activity、Fragment里面閱讀,對一個界面的邏輯理解并不是那么的清晰。當然,Android的MVC架構,很多都不是特別的清晰,因為Activity作為控制器,卻做了很多視圖的處理,或者把Activity理解成為視圖,卻擁有著大量的控制器邏輯。MVP架構會在這個MVC基礎上錦上添花。雖然會添加很多接口類,但清晰度上面提高了,后面通過泛型應該也可以簡約更多的代碼。
Android官方MVP架構:
https://github.com/googlesamples/android-architecture
學習后分析了一下,先上圖
image
Activity作為MVP的主控制,初始化Precenter(P)、Fragment(V)、TasksRepository(M),View層響應UI事件,并通過Precenter層去獲取數據,Precenter會通過調用Model層去獲取內存中緩存的、本地數據庫的、網絡服務器的數據,最終通過回調方法響應數據到View層顯示。
在看看官網demo的目錄結構:
image
從契約類Contract可以看出,Precenter跟View層的接口都比較清晰的查看,而Model層則是通過實現TasksDataSource接口,達到數據獲取、網絡數據獲取、本地數據獲取,都是實現相同的接口。因此三者具體的交互應該是這樣的
image