1.MVP模式
? ? ? ? ?MVP(Model-View-Presenter)模式提供數據,View負責顯示,Controller/Presenter負責邏輯的處理。MVP是從經典的模式MVC演變而來,它們的基本思想有相通的地方:Controller/Presenter負責邏輯的處理,Model提供數據,View負責顯示。當然MVP與MVC也有一些顯著的區別,MVC模式中元素之間“混亂”的交互主要體現在允許View和Model直接進行“交流”,這在MVP模式中是不允許的。在MVP中View并不直接使用Model,它們之間的通信是通過Presenter(MVC中的Controller)來進行的,所有的交互都發生在Presenter內部,而在MVC中View會直接從Model中讀取數據而不是通過Controller。
2.MVP的結構
? ? ? ? MVP不僅僅避免了View和Model之間的耦合,還進一步降低了Presenter對View的依賴。Presenter依賴的是一個抽象化的View,即View實現的接口IView,這帶來的最直接的好處,就是使定義在Presenter中的UI處理邏輯變得易于測試。由于Presenter對View的依賴行為定義在接口View中,只需要一個實現了這個接口的View就能對Presenter進行測試。MVP的結構如圖1所示。
?圖1 MVP設計模式
3.MVP的優點 ? ? ?
? ? ? ? 使用MVP模式來設計表現層,可以有以下的優點。
? ? ? ? (1)模型與視圖完全分離,可以修改視圖而不影響模型。
? ? ? ? (2)可以更高效地使用模型,因為所有的交互都發生在一個地方——Presenter內部。
? ? ? ? (3)可以將一個Presenter用于多個視圖,而不需要改變Presenter的邏輯。這個特性非常的有用,因為視圖的變化總是比模型的變化頻繁。
? ? ? ? (4)如果把邏輯放在Presenter中,就可以脫離用戶接口來測試這些邏輯(單元測試)。
? ? ? ? 目前,MVP模式被更多地用在Android開發當中。