跟 pureMVC MultiCore & Modules 相處幾天後發現了一個簡易串接流程能互相接聽與發送訊息(其實還有更爛的方法...XD 只是為了能自動化改用這個...)。不能說下面分享的是很好的解法,只能說它應該是個蠻容易理解外加還沒發現有啥嚴重 bug 的方法...
做法其實很簡單,就是 System facade 在 load Module 時,建立一個 Module 專用的 Mediator 並且將 Module 指定給它為其 viewComponent,就可以透過這個 Mediator 串接起來,這樣不管有多少個 Modules 都可以對應一個 ModuleMediator 來處理。這個串接的 Mediator 特別的地方就是它做了雙向註冊,如同轉接國際電話的接線生,因為跟兩邊都有關係,所以可以接聽跟發送兩邊的 Notifications。
請看 Live Demo(Demo 頁點選滑鼠右鍵可以看 source code )
- ModuleManager 是寫在 Main.mxml 內而不是跟著 ModuleCommand 一起,原因是在 Flex 3.2 SDK 之後版本為了解掉更嚴重的 Module load & unload memory leak bug.. IModuleInfo 是區域變數的話,就容易被 GC 掉...這不是個 bug 喔!(Adobe 講的...也不知道是真的假的...沒特別研究...)
- Module 沒有真正 unload 掉,反正它會反覆載入,就不真的移除了...所以請自助...
- System facade 只用 ModuleCommand and ModuleMediator 處理所有的外部 Modules,所以重點都在這兩個 class 內...XD
- 為了輸出專案時不會將 Module 一併打包和要統一命名 Module's facade,所以外部的 Module 都需要 implements IModuleComponent interface。
- (Edit: 3/4/2009) 由於 System facade 掌握著 Module facade 的名字,如果 System message 需要傳到特定的 Module 也可以很簡單的實現...=P
感謝分享,最近剛好在寫pureMVC跟module的溝通,這個範例可學到不少東西
ReplyDeleteErin大有試過fabrication嗎?
ReplyDeletehttp://code.google.com/p/fabrication/
用這個寫multicore版很方便也很簡潔呢^^
喔喔~ 有時間來研究一下...=P,謝謝分享捏~~我就是喜歡可以簡潔的寫法...XD
ReplyDeleteErin姐姐, 你寫的文章, 好有深度
ReplyDelete有基礎的PureMVC文章可以介紹的嗎
奶綠哥哥...要基礎的pureMVC文章到他的官網上一堆喔~~^^*
ReplyDeletePUREMVC 我也想摸摸看了~~@@
ReplyDelete不過可惜能力還不夠
我這篇引用到你文章~ 先謝謝了 ^^
http://blog.corausir.org/programing/ausir-855
corAusir 程式逗設計 - 提供設計資料與程式設計 -
http://blog.corausir.org/
正可惜,demo页面查看不了了。。
ReplyDeleteDemo 頁還是活的好好的呦...看你用簡體的...所以你可能要透過代理才可以看喔!
ReplyDelete我在公司打开了,这个确实不错,不过不知道跟fabrication有什么区别?最近正在用pureMVC做项目,希望交流下。
ReplyDelete關於 Fabrication 我並沒有花很多時間下去研究,它是用一個加強版 pureMVC 架在原本的架構上,跟一般 pureMVC的工具包不同,它提供完整的架構,所以實作幾乎是綁定在 Fabrication 上...就看你自己選擇囉..我本身是比較愛亂加亂改東西...所以喜歡自己組合工具包...=P
ReplyDelete最近在挑選pureMVC的版本時,遇到了大決擇,
ReplyDelete練習時,使用pureMVC standard的版本做了一個簡單的AddressBook的維護。
但要實作的系統,是像一個有menubar,多個功能的維護系統。(一般的Windows應用程式)。
但不知道要用multicore的版本或是standand的版本。
是不是有什麼經驗可以分享,在挑選版本時的考量呢?
(目前多個功能,都是用MDI Windows的方式,若menubar被click了,
再去new 那個MDI Window,這樣的話,是不是跟本就不需要多個ApplicationFacade,
也不會把多個功能拆成多個Module)
關於 pureMVC multicore 版本應用程式的開發我最近會找個時間分享一下... 其實 pureMVC standard 就很夠用,但是為了整合部分 modules view 所以使用 multicore 的版本,寫到目前為止我是覺得 shared library 比 module 好用...
ReplyDelete謝謝您的回覆,本來是想使用multicore + pipe + fabrication來做~~想說如果不用module的話,就如你所說的,改用standard來做即可~~
ReplyDeletedemo not open , can i see /
ReplyDeleteIf you need the source code, you can email me.
ReplyDelete