目前主流Flex的框架主要有Cairngorm和PureMVC两种。Cairngorm是adobe自己推广的框架,感觉Cairngorm只能称为“architecture pattern”,基本上只是定义了一个工程分成那几个部分以及每个部分的interface。另外Cairngorm通过Singleton 的ModelLocator来保存数据,有很多副作用,也决定了不适用用组件开发。PureMVC基本上解决了Cairngorm存在的大部分问题。
PureMVC的优点:
(1)结合了MVC和MVP框架的优点,实现很彻底。
(2)基本上可分为Façade、Command、Mediator(components)、Proxy(Value objec)四个部分,各部分耦合度很低,灵活度非常高(这也是个缺点,下面再谈)。
(3)各部分单元测试容易实施。
(4)View重用容易实现。
(5)可用于组件、Module开发。
(6)Proxy的设计使得扩展和维护比较容易。
PureMVC的缺点:
(1)灵活度过高,要清晰控制一个事务过程不容易。
PureMVC自己实现了Observer Pattern,处理过程变成了订阅/发布过程,这样做法使得灵活性非常好,也使得流程混乱不堪。
它不像早期的Java web 框架webwork(struts)、spring使用集中的XML文件控制流程,也不像敏捷的代表Rails使用契约编程来规范流程。目前只是在 ApplicationFacade中定义事件名常量,流转过程完全不可见。由于ActionScript还在发展过程中,其Reflection能力还比较弱,要实现上述功能还是比较困难。
(2)代码冗余量高
Mediator、Proxy等继承类的冗余代码是比较多的,但是ActionScript不支持Generics以及Reflection能力弱,使得难以消减代码。
总的来说,PureMVC是不错的框架,待ActionScript语言功能发展后,还有改进的余地。
PureMVC Reference :
(2) PureMVC Explorer
(3) Popups in Flex using PureMVC
(4) Understanding PureMVC Pipes
(5) A basic PureMVC MultiCore AS3 example using Pipes Utility and Modules