在提到MVP之前,可以先看看這篇MVC的帖子:
【Unity】MVC的簡單分享以及一個在UI中使用的例子
MVC的不足之處:
在MVC的使用中,會發現View層直接調用了Model層的引用,即這兩個層之間存在著一定的耦合性,而MVP則可優化MVC中存在的這個視圖層與數據層之間的耦合問題。
MVP的解釋為:
Model(模型層/數據層):負責數據的處理、例如增刪查改等等。
View(視圖層):負責獲取控件,向用戶顯示數據。
Presenter(主持人):接收用戶輸入,操作Model層,再更新View層。
其中MVP與MVC最大的不同就是,View層的數據更新被遷移至Presenter層完成,這里的View層只負責數據的顯示,不負責數據的更新操作,好處在于易于進行單元測試。
適用場景,對比MVC:
MVC是比較簡單、直接的架構,適用于需求簡單、UI變動不大的項目,適合Web開發和快速原型開發。
MVP適合更加復雜、需要高度測試性的應用。
下面是MVP框架例子:
如何使用?
腳本說明:
創建三個腳本分別為(腳本具體內容處于博客最下方):
RoleModel_MVP.cs、RoleView_MVP.cs以及RolePresenter_MVP.cs。
RoleModel_MVP.cs:定義數據模型、包括了更新數據和保存數據的方法、通過事件綁定通知Presenter層需要讓View層更新數據;
RoleView_MVP.cs:獲取UI控件;
RolePresenter_MVP.cs:上為視圖層中的組件綁定事件業務、直接更換視圖層更新UI顯示的數據,下能提醒數據層進行數據處理。
步驟:
????????1.創建一個UIPanel,并創建一個Text和Button,將RoleView_MVP.cs和RolePresenter_MVP.cs掛載至該UIPanel中,并將對應組件拖拽至腳本的對應屬性。如下圖。? ? ? ? ? ? ? ? ? ? ?
?
????????2.運行游戲,點擊按鈕,生命值會減少。
????????????????
????????完成!!!