[img]http://dl.iteye.com/upload/attachment/520822/58e8d28f-5cd0-32ca-a349-7a2f9eb46ffe.jpg[/img]
[color=red][b]一、pureMVC 內核:[/b][/color]
View、Control、Model,三者都是單例,三者的管理者、協作者是Facade,Facade負責三者之間的通信、映射、註冊、初始化等,Facade也是pureMVC的啓動者。
1、View層(單例):View負責對Mediator的管理;View內部有兩個映射表mediatorMap、observerMap,mediatorMap用來存儲所有的Mediator,observerMap存儲着所有的通信觀察者(Observer,即監聽消息者),在註冊一個Mediator之時View會自動根據Mediator內部的listNotificationInterests返回的需要觀察的通信消息命令頭來創建相應的觀察者並映射到observerMap表中,一個消息頭可以映射多個Observer;另外,在調用 RegisterCommand時也會自動將該Command作爲觀察者映射到該observerMap表中。
2、Control層(單例):Control內部存有所有Command的映射表,負責View和Model之間的邏輯及通信操作,以達到將View 與 Model解耦合,在調用 RegisterCommand時也會自動將該Command作爲觀察者映射到View中的observerMap表中。
3、Model層(單例):Model存儲所有Proxy的映射,Model只與Control通信,並可以被Control直接引用或接受Control發來的消息,Model負責數據模型及遠程調用的操作。
二、四者之間 的關係:
1、View可以發送至Control或接受來自Control的消息,View 不允許直接與 Model通信,兩者之間的通信必須經過Control; View不允許直接通過Facade引用Control來執行代碼,必須通過消息發送;View可以直接被Control通過Facade引用,但官方不支持這種寫法,希望View應該儘量不開放接口;
2、Model不允許向View發送消息,但是可以向Control發送消息,也不允許直接通過Facade引用Control或View來執行代碼,但是Control可以直接通過Facade引用Model來執行代碼;
3、Facade提供了View、Model、Control三者的初始化、註冊、刪除、引用及通信的接口 。
[color=red][b]三、通信:[/b][/color]
1、Observer(觀察者): Observer存儲了正在觀察的對象(即Command或Mediator對象)和對應的執行函數;
2、Notifier包含了sendNotification的接口,Command、Mediator、Proxy都是繼承於Notifier。Notifier中的sendNotification中引用了Facade.sendNotification的接口;
3、Facade 中的sendNotification通過調用notifyObservers接口引用View.notifyObservers接口;
4、View中的notifyObservers實現通信:首先,通過notification.getName()在observerMap查找出對應的觀察者列表;其次,循環遍歷找出的對應觀察者列表,調用觀察者的notifyObserver接口 來執行Observer內部的觀察對象的執行函數。
pureMVC詳解
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
MsgQ機制,實現H5遊戲的模塊徹底分離
溪水娃娃
2020-07-06 22:26:32
對TypeScript版PureMVC的優化
溪水娃娃
2019-09-03 05:08:35
cocos creator中使用PureMvc框架(一)
嘿呀好气
2019-05-04 18:23:50
(一)關於Creator中使用PureMVC和TS的坑
独徜徉
2019-04-19 10:16:00
PUREMVC 開源框架一
fhqydidxil1zql
2019-02-19 06:53:43
pureMVC簡單示例及其原理講解——View層
superwulei
2018-11-04 10:00:10
pureMVC簡單示例及其原理講解——開篇
superwulei
2018-11-04 10:00:10
pureMVC簡單示例及其原理講解——Controller層
superwulei
2018-11-04 10:00:10
PureMVC 遊戲框架解析
ywjun的学习笔记
2018-09-03 18:27:06
Unity3D 物品系統結合MVC框架設計之裝備[1]
_少狼
2018-08-30 19:36:25
PureMVC遊戲框架解析 理解其中包含的設計模式
养不家
2018-08-27 22:23:27