Unity3D架構之PureMVC


之前了解過UI實現框架大多是用MVC架構的,才聽說有這么一個基於MVC的跨平台開源框架叫PureMVC,前幾天用到了做了一下,寫一寫分析總結
官網位置:http://puremvc.org/
PureMVC架構圖
PureMVC在MVC的基礎上又增加了Facade模式(外觀模式)、Mediator模式(中介者模式)、Observer模式(觀察者模式)、Proxy模式(代理模式)和Command模式(命令模式)
 
關於Proxy(model)
Proxy模式為代理模式,為其他對象提供一種代理,並以控制對這個對象的訪問。
Proxy負責收發服務端的消息,也可以在其中寫少量邏輯。收到消息后發送Notification到Mediator(view部分),在Mediator可以實例化Proxy發送消息到服務端。

關於Mediator(view)
Mediator模式是中介者模式,用一個中介對象來封裝一系列的對象交互。中介者使各對象不需要顯式地相互引用,從而使其耦合松散,而且可以獨立地改變它們之間的交互。
Mediator是直接處理UI顯示部分的邏輯,包括事件監聽,發送與接收Notification(通過Proxy發送, Notify接受),把UI部分的邏輯寫在這里,然后UI部分view類直接負責顯示,這也解決了視圖與視圖控制邏輯的分離,減少耦合。

關於Command(command)
Command模式是命令模式,將一個請求封裝為一個對象,從而使我們可用不同的請求對客戶進行參數化;對請求排隊或者記錄請求日志,以及支持可撤銷的操作。Command模式解耦了發送者與接收者之間的聯系。
在PureMVC中,Controller保存了所有Command的映射。Command是無狀態且惰性的,只有在需要的時候才被創建。

關於Facade(core)
PureMVC中的model、view、controller的調用是基於Facade模式的。 為子系統中的一組接口提供一個一致的界面, Facade模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。引入外觀角色之后,用戶只需要直接與外觀角色交互,用戶與子系統之間的復雜關系由外觀角色來實現從而降低了系統的耦合度。
在PureMVC中,Facade是與核心層(Model,View,Controller)進行通信的唯一接口,目的是簡化開發復雜度。實際編碼過程中,不需要手動實現這三類文件,Facade類在構造方法中已經包含了對這三類單例的構造。
Facade是一個單例,以接口的形式來實現注冊與刪除Mediator、Command、Proxy(他們也都是單例)。

關於Observer(notification)
Observer模式是觀察者模式, 定義對象間的一種一對多的依賴關系,當一個對象的狀態發生改變時, 所有依賴於它的對象都得到通知並被自動更新。
PureMVC之間的通信是通過觀察者模式發送通知來實現的,是一種松耦合的方法,Proxy向Mediator, Facade向Command發送通知Notification。

參考:http://www.jianshu.com/p/47deaced9eb3

by wolf96 2017/7/16
 
 
 
 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM