安卓手冊 第四章(MVP介紹和實戰)
什麼是MVP?
MVP是Model, View和Presenter的簡稱。是非常有名的MVC模式的演化版。MVP模式把顯示邏輯和從業務邏輯層中分離出來,理想狀況下,MVP模式中,在替換不同的視圖(View)的情況下,可以實現完全相同的業務邏輯。
Presenter代替了MVC中Controller,它比Controller擔當更多的任務,也更加複雜。Presenter處理事件,執行相應的邏輯,這些邏輯映射到Model的Command以操作Model。那些處理UI如何工作的代碼基本上都位於Presenter。Presenter如同一個樂隊的指揮家,表現和協調整個Application,它負責創建和協調其它對象。
MVP與MVC有着一個重大的區別:在MVP中View並不直接使用Model,它們之間的通信是通過Presenter (MVC中的Controller)來進行的,所有的交互都發生在Presenter內部,而在MVC中View會從直接Model中讀取數據而不是通過 Controller。
爲什麼使用MVP模式
因爲在Android中,Activity
嚴重耦合了界面和數據獲取層。這樣不僅導致了Activity
的類越來越龐大,而且,如果修改數據獲取層,可能也導致整個View都要重寫。也非常不利於模塊和自動化測試。
MVP使View獨立於數據,把大量的邏輯從Activity
中提取出來。把應用分層,每層都可以獨立測試和變動。
MVP模式是如何工作的
MVP
模式中的角色劃分並沒有標準的劃分方法。大致的定義如下:
-
表示器(Presenter)
表示器也可以稱爲指揮器,它處在View和Model之間,負責從Model中獲取數據,然後返回給View。同時決定視圖上的交互的處理。 -
視圖(View)
視圖比較好理解,在Android中一般對應的是Activity
,Fragment
或者View
。因爲視圖上的交互需要通知表示器,讓它決定做什麼事情。所以View中一般包含一個Presenter的引用。理想狀況下,Presenter一般使用依賴注入的方式實現。 -
模型(Model)
模型是應用程序中的數據處理和業務邏輯部分。
MVP處理流程如下圖所示:
好了,以上時MVP的介紹,相信大家已經瞭解,下面進行實戰演練(不牽扯相應設計,只爲了解思想):
正在編輯,待後續。