View(界面): View部分就是页面了,这部分需要注意的就是声明ServiceLocator和FrontControl。ServiceLocator的声明和我们之前提到的FrontControl是一样的。View部分的作用就是提供界面,发送信号,响应绑定数据变化。
<service:UserService id="myService"/>
<control:UserController id="myController"/>
Model:Model定义了一个ModelLocator接口,我们只需要实现它并且写成一个单例模式即可。Model部分一般存放需要绑定在页面的数据。
[Bindable]
static private var _instance:ModelLocator = null;
public function ModelLocator(){}
static public function getInstance():ModelLocator{
if(_instance == null){
_instance = new ModelLocator();
}
return _instance;
}
Event:Event定义flex页面中所发生的事件和接收前台发来的参数,使Control通过相应的事件对command进行映射。对业务进行信息处理。
import com.adobe.cairngorm.control.CairngormEvent;
public class [classname] extends CairngormEvent{
public static var loginEvent:String="LOGIN_EVENT";
public function LoginEvent()
{
super(loginEvent);
}
}
Control:Control部分定义了三个基类:CairngormEvent, CairngormEventDispatcher, FrontController。
CairngormEvent定义一个Event,一般在CairngormEvent中存储数据模型,例如我们要做一个用户登录页面,点击登录按钮之后我们就发送一个包含用户名和登录密码的event,我们可以把用户名和登录密码封装在一个类中(这就是后面我们要说的VO)然后放入event里面。
import com.adobe.cairngorm.control.FrontController;
public class UserController extends FrontController{
public function UserController(){
super();
addCommand(LoginEvent.loginEvent,LoginCommand);
}
}
Command:Command部分包含所有可执行的命令,你可以理解为所有的后台函数调用都在Command部分完成,至于Command如何完成这些任务我们稍后再说。Command部分定义了ICommand接口,并且需要实现一个叫做execute()的方法。我们可已通过定义自己的Command来完成我们需要的任务,所有的Command命令都要实现ICommand和IResponder接口,IResponder接口定义了result()和fault()方法 .
import com.adobe.cairngorm.commands.ICommand;
import com.adobe.cairngorm.control.CairngormEvent;
import mx.rpc.IResponder;
import mx.rpc.events.ResultEvent;
public class LoginCommand implements ICommand, IResponder
{
public function LoginCommand()
{
}
public function execute(event:CairngormEvent):void
{
loginDelegate.displayUser();
}
public function result(data:Object):void
{
var _model:ViewModelLocator = ViewModelLocator.getInstance();
_model.v=(data as ResultEvent).result.toString();
}
public function fault(info:Object):void
{
trace("fault ..........");
}
}
Service:包含:Delegate 和ServiceLocator 。Delegate相当于一个代理,通过Command调用,它的工作是定位远程服务并且完成相应的服务调用,ServiceLocator就是这个远程服务的定义。Delegate是一个单例模式(singleton pattern)。
import com.adobe.cairngorm.business.ServiceLocator;
import mx.rpc.IResponder;
public class UserDelegate
{
private var service:Object;
private var response:IResponder;
public function UserDelegate(response:IResponder)
{
this.service=ServiceLocator.getInstance().getRemoteObject("RemoteHelloWord"); //获取RemoteObject对象
this.response = response;
}
public function displayUser():void
{
var call:Object = service.sayHelloWord(); // 调用服务器的方法
call.addResponder(response);
}
}
VO
Value Object部分说简单点就是一个个对象,虽然Cairngorm定义了VO的一些接口,项java一样封装一些方法和属性。
[Bindable]
public class User{
//在界面要显示的用户名
public var userName:String;
public var password:String;
public function User(){
}
}
View(界面): View部分就是页面了,这部分需要注意的就是声明ServiceLocator和FrontControl。ServiceLocator的声明和我们之前提到的FrontControl是一样的。View部分的作用就是提供界面,发送信号,响应绑定数据变化。
<service:UserService id="myService"/>
<control:UserController id="myController"/>
Model:Model定义了一个ModelLocator接口,我们只需要实现它并且写成一个单例模式即可。Model部分一般存放需要绑定在页面的数据。
[Bindable]
static private var _instance:ModelLocator = null;
public function ModelLocator(){}
static public function getInstance():ModelLocator{
if(_instance == null){
_instance = new ModelLocator();
}
return _instance;
}
Event:Event定义flex页面中所发生的事件和接收前台发来的参数,使Control通过相应的事件对command进行映射。对业务进行信息处理。
import com.adobe.cairngorm.control.CairngormEvent;
public class [classname] extends CairngormEvent{
public static var loginEvent:String="LOGIN_EVENT";
public function LoginEvent()
{
super(loginEvent);
}
}
Control:Control部分定义了三个基类:CairngormEvent, CairngormEventDispatcher, FrontController。
CairngormEvent定义一个Event,一般在CairngormEvent中存储数据模型,例如我们要做一个用户登录页面,点击登录按钮之后我们就发送一个包含用户名和登录密码的event,我们可以把用户名和登录密码封装在一个类中(这就是后面我们要说的VO)然后放入event里面。
import com.adobe.cairngorm.control.FrontController;
public class UserController extends FrontController{
public function UserController(){
super();
addCommand(LoginEvent.loginEvent,LoginCommand);
}
}
Command:Command部分包含所有可执行的命令,你可以理解为所有的后台函数调用都在Command部分完成,至于Command如何完成这些任务我们稍后再说。Command部分定义了ICommand接口,并且需要实现一个叫做execute()的方法。我们可已通过定义自己的Command来完成我们需要的任务,所有的Command命令都要实现ICommand和IResponder接口,IResponder接口定义了result()和fault()方法 .
import com.adobe.cairngorm.commands.ICommand;
import com.adobe.cairngorm.control.CairngormEvent;
import mx.rpc.IResponder;
import mx.rpc.events.ResultEvent;
public class LoginCommand implements ICommand, IResponder
{
public function LoginCommand()
{
}
public function execute(event:CairngormEvent):void
{
loginDelegate.displayUser();
}
public function result(data:Object):void
{
var _model:ViewModelLocator = ViewModelLocator.getInstance();
_model.v=(data as ResultEvent).result.toString();
}
public function fault(info:Object):void
{
trace("fault ..........");
}
}
Service:包含:Delegate 和ServiceLocator 。Delegate相当于一个代理,通过Command调用,它的工作是定位远程服务并且完成相应的服务调用,ServiceLocator就是这个远程服务的定义。Delegate是一个单例模式(singleton pattern)。
import com.adobe.cairngorm.business.ServiceLocator;
import mx.rpc.IResponder;
public class UserDelegate
{
private var service:Object;
private var response:IResponder;
public function UserDelegate(response:IResponder)
{
this.service=ServiceLocator.getInstance().getRemoteObject("RemoteHelloWord"); //获取RemoteObject对象
this.response = response;
}
public function displayUser():void
{
var call:Object = service.sayHelloWord(); // 调用服务器的方法
call.addResponder(response);
}
}
VO
Value Object部分说简单点就是一个个对象,虽然Cairngorm定义了VO的一些接口,项java一样封装一些方法和属性。
[Bindable]
public class User{
//在界面要显示的用户名
public var userName:String;
public var password:String;
public function User(){
}
}