10月 09

先说PureMVC的模块开发吧,PureMVC要实现真正意义的模块开发,要用它的MultiCore多核版,所谓多核就是多例,大家知道单核的PureMVC的ApplicationFacade是整个APP只有一个,而多核则是多个Facade,Shell和单个Module都是有自己的Facade的,整个APP的Facades变成一个Array了。
我的单核PureMVC Template是看遍了官方所有示例后,总结出来的(PureMVC的官方示例结构组织的极好,简单明了,职责清晰),力求一切以官方推荐的方式来构建PureMVC项目,第三方的示例发现都会按自己的理解做些或大或小的改动。这些改动如果很牛还好,有些确实违背官方理念,如果真的那么有想法就自己写个MVC好了,哪怕就像fabrication样,说自己是只是部分基于PureMVC。
再说说官方的PipeWorks示例,真是坑爹呀,说什么This demo illustrates usage of the PureMVC AS3 MultiCore Framework and the MultiCore Pipes Utility using Flex Modules.
可是我看了半天也没看明白他是怎么 using Flex Modules,人家Flex框架的Modules都是作为单个的SWF,加载进主程序的,这个示例module和shell都交织在一起了。
还好有tekool网站的flash-only-modules-with-puremvc-pipes-demo,虽然没有官方的目录结构清晰条理,但人家至少是实打实把module作为swf加载进来用的。还要fabrication那个hello_flash_with_module示例也是,不过fabrication改动太大了,而且也没更新了,不推荐使用。
不过好像Utility AS3 MultiCore Pipes也好多年没更新过了。还是robotlegs-utilities-Modular有生命力些。
robotlegs和pureMVC的侧重点完全不一样,一说pureMVC就是消息机制啦观察者模式啦,还有人说用它就是为了用它的Notification。哈哈。而一说Robotlegs就是依赖注入控制反转(反射)啦,它的事件直接用的Adobe原有的,当然可以用signals,但毕竟不像PureMVC那样是框架的核心。
我的单核PureMVC Template目录结构图,具体代码看我的github ,里面有大量注释和说明
 
就我现在的理解来看,PureMVC就如它名字一样,很纯粹,比起Robotlegs跟轻量些,用起来也简单些。其实很多用PureMVC的人,他们想要的其实不过是signals。哈哈。前个项目因为先到的同事已经用PureMVC构建了游戏基本架构,我也就研究了下,之前我一直是Robotlegs粉。结果他也没按PureMVC的官方推荐来用,我也就随便写了。
这次新公司还是用PureMVC,而且用单核版做了个Module架构,因为是Module,所有我可以比较完整是使用PureMVC,于是就有了上面的PureMVC Template。发现项目大了,人多了,不用Module方式开发项目根本不行,而不得不说PureMVC在个人小项目上用还是很好的,大项目确实力不从心呀。
我把Frederic Saunier的flash-only-modules-with-puremvc-pipes-demo,改成了纯as项目,可以直接在FDT,FB中使用。然后又进一步自己构建了demo。
具体代码可以去github看,地址:https://github.com/panhezeng/PanCodeShare/tree/master/com/apsay/PureMVCPipes
FredericSaunierAS3是改的,AS3那个是自己重构的,实现了shell与modules,module与module之间通信,module的自动加载和手动加载,等等。
注释写了一半的样子,后来事多就耽搁了。最近有试试优化,用概要分析看发现加载的子模块swf,无法卸载,无解,放弃了,以后会把精力放在Robotlegs上。大家如果有好的demo可以和我分享。

written by panhezeng \\ tags:

Leave a Reply

Me

点这和我talk,panhezeng@gmail.com