官术网_书友最值得收藏!

1.3.2 MVP模式介紹

MVP的英文全稱為Model View Presenter,它是從經典的MVC模式演變而來的。它們的基本思想有相通的地方:Controller/Presenter負責邏輯的處理,Model提供數據,View負責顯示。MVP從MVC演變而來,通過表示器將視圖與模型巧妙地分開。在該模式中,視圖通常由表示器初始化,它負責呈現用戶界面(UI),并接收用戶所發出的命令,但不對用戶的輸入做任何邏輯處理,而僅僅是將用戶輸入轉發給表示器。通常每一個視圖對應一個表示器,但是也可能一個擁有較復雜業務邏輯的視圖會對應多個表示器,每個表示器完成該視圖的一部分業務處理工作,降低了單個表示器的復雜程度;一個表示器也能被多個有著相同業務需求的視圖復用,增加單個表示器的復用度。表示器包含大多數表示邏輯,用以處理視圖,與模型交互以獲取或更新數據等。模型描述了系統的處理邏輯,但對于表示器和視圖一無所知。

1.MVP模式的優點

MVP模式的優點體現在以下三個方面。

(1)View與Model完全隔離。Model和View之間具有良好解耦性的設計,這就意味著,如果Model或View中的一方發生變化,只要交互接口不發生變化,另一方就無須對上述變化做出相應的變化,這使得Model層的業務邏輯具有很好的靈活性和可重用性。

(2)Presenter與View的具體實現技術無關。也就是說,采用諸如Windows表單、WPF(Windows Presentation Foundation)框架、Web表單等用戶界面構建技術中的任意一種來實現View層,都無須改變系統的其他部分。甚至為了使B/S、C/S部署架構能夠被同時支持,應用程序可以用同一個Model層適配多種技術構建的View層。

(3)可以進行View的模擬測試。由于View和Model之間的緊耦合,在Model和View同時開發完成前對其中一方進行測試是不可能的。出于同樣的原因,對View或Model進行單元測試很困難。MVP模式解決了上述所有的問題。在MVP模式中,View和Model之間沒有直接依賴,開發者能夠借助模擬對象注入測試兩者中的任意一方。

2.MVP模式與MVC模式的區別

MVP模式示意圖如圖1-1所示。作為一種新的模式,MVP與MVC有著一個重大的區別:在MVP中View并不直接使用Model,它們之間的通信是通過Controller來進行的,所有的交互都發生在Controller內部;而在MVC中View會直接從Model中讀取數據,而不是通過Controller。在MVC中,View是可以直接訪問Model的。View中會包含Model信息,不可避免地還要包括一些業務邏輯。在MVC模式中,更關注Model的不變,而同時有多個對Model的不同顯示及View。所以在MVC模式中,Model不依賴于View,但View是依賴于Model的。不僅如此,因為有一些業務邏輯在View中實現,導致要更改View也是比較困難的,至少那些業務邏輯是無法重用的,代碼復用率低。

圖1-1 MVP模式

主站蜘蛛池模板: 大连市| 连南| 康马县| 兴安盟| 九寨沟县| 剑河县| 马尔康县| 策勒县| 平舆县| 宜兰市| 顺义区| 澳门| 阳东县| 民权县| 依安县| 巩留县| 芒康县| 延川县| 林周县| 宝清县| 陵川县| 定安县| 崇左市| 台州市| 瑞金市| 江北区| 孝义市| 兴城市| 克什克腾旗| 屏东县| 金乡县| 六盘水市| 望奎县| 广德县| 会同县| 都昌县| 神木县| 林州市| 阜阳市| 太原市| 湟源县|