前一段时间,曾经做过一点flex的开发工作,最初使用的是cairngorm,后来研究了一下 pureMvc,并进行了部分改造。
由于只是初步涉足flex领域,所以只能提出一点自己的看法,并不具有说服力。
cairngorm 前端的控件监听用户的行为,只是监听,并不会做任何反应。控件监听以后调用Commands来做相应的事情,Command做了所有工作。把业务逻辑委托到 Bussiness Delegates中,Command调用Business Delegate 后,Business Delegate 通过Service Locator来找到相应的RPC services,然后执行实现从服务器端取数据。
在Model Locator 保存状态并且能使Model检测到View的变化。这样一来用户操作就能直接影响Model。
它的体系主要包含下面几部分(具体用法就不做分析了):
1. Business(业务逻辑部分)
2. Command(命令部分)
3. Control(控制部分)
4. Model(数据模型)
5. View(界面视图)
6. VO(ValueObject)
使用cairngorm 对于整个事件的流程会比较的清晰。个人认为它的整个流程很符合人类的思维方式。但是在实际开发中却感觉 每当添加一个事件的时候,就要去写event command delegate,事件一多就会感觉重复写这些东西很烦。这时候就开始考虑更换一下框架,于是在头的指导下去看了pureMvc框架。
学了两天后,就深深喜欢上pureMvc了,哈哈!
顾名思义。pureMvc 就是纯的mvc框架,许多人都错误地把PureMVC误认为它是一个Flash的MVC框架或者是Flex的MVC框架。既然它是一个纯框架,那么,它就不仅仅是支持某种特定的语言,它的设计是与语言无关的。它支持了好多种常用的编程语言。
pureMvc的层次结构比cairngorm清晰的多,严格的MVC三层结构。
1、Model保存对Proxy对象的引用,Proxy负责操作数据模型,与远程服务通信存取数据。
2、View保存对Mediator对象的引用。由Mediator对象来操作具体的视图组件(View Component,例如Flex的DataGrid组件),包括:添加事件监听器,发送或接收Notification ,直接改变视图组件的状态。
3、Controller保存所有Command的映射。Command可以获取Proxy对象并与之交互,通过发送Notification来执行其他的Command。
pureMvc采用了“观察者模式”(被观察者是不关心观察者是谁的),通过消息机制,来维持command 与 mediator的关系,将它们之间的耦合度降到最低。notification机制也是我最喜欢pureMvc的一个方面。