PureMVC
PureMVC Gestalt
特点:
- Proxies = Model
- Mediator and its ViewComponents = View
- Commands = Controller
Facade and Application entry
顾名思义,Facade是外观模式类,它将MVC的核心三元素组合进自己的对象,以简化程序开发,它是PureMVC应用程序的入口。
职责:
注意:
除了顶层的Application,其他视图组件都不用(不应该)和Façade交互
实现:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
creationComplete="facade.startup(this);">
<mx:Script>
<![CDATA[
private var facade:ApplicationFacade =ApplicationFacade.getInstance();
]]>
</mx:Script>
</mx:Application>
Notification
PureMVC使用了观察者模式,所以各层之间通过Notification以松耦合的方式通信,并且与平台无关。
在各层之间的应用:
各层之间的传输路径:
Notification和Event常量:
Command
Command对象是无状态的(可以对比Http协议的无状态性)
职责:
1. 注册、删除Mediator、Proxy和Command,或者检查它们是否已经注册。
2. 发送Notification通知Command或Mediator做出响应。
3. 获得Proxy和Mediator对象并直接操作它们。
4. 管理应用程序的业务逻辑。
5. 与Mediator和Proxy交互,应避免Mediator与Proxy直接交互。
实现:
Model and Proxy
Proxy封装了数据模型,管理Data Object及对Data Object的访问。Model通过使用Proxy来保证数据的完整性、一致性 。Proxy集中程序的Domain Logic(域逻辑),并对外公布操作数据对象的API。它封装了所有对数据模型的操作,不管数据是客户端还是服务器端的,对程序其他部分来说就是数据的访问是同步还是异步的。
Proxy Pattern分类:
2.Proxy and Delegate,多个Proxy共享对一个服务的访问,由Delegate封装对服务的控制访问,确保响应正确的返回给相应的请求者。
3.Protection Proxy,用于数据对象的访问有不同的权限时。
4.Virtual Proxy,对创建开销很大的数据对象进行管理。
5.Smart Proxy,首次访问时载入数据对象到内存,并计算它被引用的次数,允许锁定确保其他对象不能修改。
实现:
public function get searchResultAC () : ArrayCollection
{
return data as ArrayCollection;
}
public function get resultEntry( index:int ) : SearchResultVO
{
return searchResultAC.getItemAt( index ) as SearchResultVO;
}
Mediator
Mediator是视图组件与系统其他部分交互的中介器,它封装View component(它们之间的内部交互通过View Component派发的Event事件),它通过发送和接收Notification来与程序其他部分通讯。
职责:
实现:
protected function get controlBar() : MyAppControlBar
{
return viewComponent as MyAppControlBar;
}
注意: