Cairngorm中使用remoteObect方式

1. 在Control中有Command.as定义了Command接口,笔记一中FrontController中addCommand的调用添加的Command都必须实现此接口。Command接口只定义一个唯一的需要实现的方法execute(); 这是一个典型的命令模式, 所有后续的命令都实现此接口, 对外统一提供一个单点入口execute(), 其他的人都可以进行调用,但不需要了解命令具体的实现方式.

2. 在Model中定义了ModelLocator接口,ModalLocator是所有数据绑定的接口,也就是说应用中所有需要进行绑定的数据都需要通过此接口进行定位。在实际的应用中需要实现此接口,并提供所有的绑定数据。

3. 在business中定义了两个类 ServiceLocator和Responder。
ServiceLocator这是伪单例类, 应用开发者用于定义并获得服务.
之所以是伪单例类, 是因为ServiceLocator是定义在mxml中的,
它需要一个无参数的Public构造函数. 使用中必须定义一个ServiceLocator的子类, 并在其中定义需要的服务.

代码示例:首先在Services.mxml中进行如下定义:

* <cairngorm:ServiceLocator xmlns:mx="http://www.macromedia.com/2003/mxml"
*                           xmlns:cairngorm="org.nevis.cairngorm.business.*" >
*
*   <mx:RemoteObject id="customerDelegate" source="org.nevis.cairngorm.samples.login.CustomerDelegate"
*                    result="event.call.resultHandler( event )"
*                    fault="event.call.faultHandler( event )">
*   </mx:RemoteObject>
*
* </cairngorm:ServiceLocator>

在Flex主应用中添加一行:
<business:Services id="services" />
其中business命名空间在应用头部进行申明
xmlns:business="org.nevis.cairngorm.samples.store.business.*"
ServiceLocator使用方法:
在业务代理类(Delegate)中通过如下方式进行调用:
*   var service = ServiceLocator.getInstance().getService( "customerDelegate" );


在View中,定义了两个类 ViewLocator和ViewHelper
ViewHelper:用于隔离Command命令类和View视图的具体实现.
为了执行业务功能, Command类需要查询并更改视图,
在执行业务逻辑前, 命令类需要从视图中获得用户输入的数据;
业务逻辑结束后又经常需要更改视图, 显示执行结果.
通过将查询和更改视图的操作封装到单独ViewHelper类中, 命令类完全不需要了解视图类的任何信息.
ViewHelper属于一种特殊的视图, 当ViewHelper创建后, 就被注册到指定的视图.
ViewHelper继承自MXMLObject, 在重写的初始化函数(initialized)中, 调用ViewLocator进行注册,
并指定unload方法的监听函数unregister, 在unload时, 调用unregister, 使用ViewLocator的取消注册.

ViewLocator是一个单例类, 用于获取ViewHelper操作视图.
命令类需要通过ViewHelper的方法来查询更改视图, 而ViewLocator即用于让命令类取得需要的ViewHelper.
命令类不需要知道ViewHelper的名称, ViewLocator会返回需要的ViewHelper实例.

track:http://www.blogjava.net/usherlight/archive/2006/03/09/34513.html

你可能感兴趣的:(html,.net,Flex)