MVP是從經典的模式MVC演變而來,他們的思路有相似的地方,如:Controller/Presenter負責邏輯的處理,Model負責提供數據,View負責顯示。作爲一種新的衍生模式,MVP和MVC有着一個重大的區別:在MVP中View並不直接與Model交互,他們之間的通信是通過Presenter來進行的,所有的交互都發生在Presenter的內部,而在MVC中View會直接從Model中讀取數據,而不是通過Controller。
如圖:
MVP模式的有點
在android開發中,Activity和Fragment並不是一個MVC模式中標準的Controller,它們的首要職責是初始化用戶界面,並負責與用戶操作交互,隨着界面和業務邏輯複雜度的提升,Activity的職責不斷增加,以致變得臃腫不堪。當將其中負責的業務邏輯處理移至另外的類(Presenter)中時,Activity or Fragment專心處理數據的顯示和用戶的交互,也就是MVP模式中View層的職責,其建立UI元素與Presenter的關聯,同時也會處理一些簡單的界面邏輯。
優點:
*降低耦合度
*利於測試
*代碼複用
*數據隱藏
*代碼靈活性
採用MVP模式進行Android開發的實例