Flex 框架cairngorm的学习

 

View(界面): View部分就是页面了,这部分需要注意的就是声明ServiceLocatorFrontControlServiceLocator的声明和我们之前提到的FrontControl是一样的。View部分的作用就是提供界面,发送信号,响应绑定数据变化。

<service:UserService id="myService"/>                 

<control:UserController id="myController"/>

ModelModel定义了一个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;

}

EventEvent定义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命令都要实现ICommandIResponder接口,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部分就是页面了,这部分需要注意的就是声明ServiceLocatorFrontControlServiceLocator的声明和我们之前提到的FrontControl是一样的。View部分的作用就是提供界面,发送信号,响应绑定数据变化。

<service:UserService id="myService"/>                 

<control:UserController id="myController"/>

ModelModel定义了一个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;

}

EventEvent定义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命令都要实现ICommandIResponder接口,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(){

        }

    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值