PureMVC不是专为actionscript3写的框架,它为各个主流编程语言都做了框架的代码实现。它是MVC设计模式的一个实践,它能指引开发人员用优雅的可扩展的方式编写带用户界面的程序,而不依赖于具体语言。
那么我们是否应该在项目中使用pureMVC呢?先看看它的优缺点吧。
MVC模式把程序按功能分为Model,View和Control三个层。Model层包含数据类(DataObject类,只保存数据),数据代理类(Proxy类,一般提供从服务器端获取数据);View层包含界面组件类(view components类,用来展示用户界面,接受用户输入),界面调停类(mediator类,用来向Facade类发送Notification消息);control层包括命令类(Command类,执行具体业务)。另外,Notification用来定义消息,Façade用来管理Notification和Command的映射关系。
这样来规划代码会使得代码功能明确,耦合性小,非常有利于团队开发和需求变更。但用不用这套框架,如何使用还需要综合考虑。下面,来看看pureMVC的一些缺点(个人观点,欢迎拍砖)。
1.pureMVC没用直接使用as3的事件机制(Event),而是自己定义了Notification类触发命令和信息传递。这样就不能使用Event提供的一些高级特性,比如弱应用,标签声明等。因为有两种方式传递消息,开发人员在选择Notificaton还是Event时就有困惑,如果项目中没有明确约定,势必造成代码风格的不统一。
2.程序运行时保留了太多资源(proxy,mediator,command),何时以及如何释放这些资源需要一个好的策略,然而这个可不是一个简单的任务。
3.对于复杂的系统,将会有数量巨大的文件件需要管理(每增加一个完整功能,将新建5个新的类,DataObject,Proxy,ViewComponet,Mediator,Command)
PureMVC or not? 对于flex项目,我的答案是not。不过学习PureMVC的源码对加深MVC设计模式理解到很有帮助。