Cairngorm是指导Flex开发以MVC(Model-View-Control)模式进行的架构框架,它的重点在于给你一个指导性原则,而并非具体实现,它要实现的目的就是提高项目的可维护性和灵活性,和重用(注意是功能上的重用,而非代码级的重用)。
它是一个由多个设计模式组合而成的集合体。
使用它的重点在于遵循它的设计思想,而非使用它的代码。
它解决的问题包括:使用Model保持客户端状态,使用ValueObject方式达到传送数据的目的。
Cairngorm推荐的最佳实践:
- 将数据模型几种到一个全局的ModelLocator中。ModelLocator应为单例模式避免变量冲突。
- 在控件中使用数据绑定
- 合理组织视图,将组件封闭(避免直接对外引用),通过声明组件所需的共有变量(需要能够绑定)从外部接收数据,声明自定义事件来播发组件的业务逻辑。
- 功能点驱动的开发,以业务逻辑为驱动(用户引发的操作,系统引发的操作,都通过Event派发,然后交给命令执行)。
Cairngorm 示意图
- Model Locator(模型定位器):存储你的应用中所有的Value Objects(数据)和共享变量在一个位置。和Http的Session对象类似,只是它存储在Flex接口的客户端而不是在中间件应用服务器的服务器端。
- View(界面):通过一个或者多个Flex组件(按钮、面板、组合框、Tile等等)组合在一起的一个个命名单元,绑定数据在Model Locator(模型定位器)中,并且产生基于用户操作(点击、滚动、拖拽等)的自定义的Cairngorm事件。
- Front Controller(前端控制器):接收Cairngorm事件并映射他们到Cairngorm命令控制器上。
- Command(命令控制器):处理商业逻辑,调用Caringorm代理和(或)其它命令。
- Delegate(代理):由命令创建,实例化远程过程调用(HTTP、Web Service等等)并且处理命令的返回结果数据。
- Service(服务):定义连接远程数据存储的远程过程调用(HTTP、Web Service等等)。
有关Cairngorm的资料:
http://cairngormdocs.org/
http://labs.adobe.com/wiki/index.php/Cairngorm |