由于要写flex的项目,接触了一段时间的Cairngorm框架,初步认识它是flex的一个mvc结构的框架实现了页面,调用相应方法的控制,和后台交互之间的三层之间的联系。Cairngorm框架主要包括以下7个部分:

数据组:ValueObject,Model

控制组:Command,controller,event,Delegate

界面组:View

项目结构如图所示,其中Delegate是放在busses下面的。

下面简单谈谈Cairngorm框架中每个包的作用:

◆ValueObject:顾名思义,就是值对象;它的作用主要有这样几个:

1.包含整个程序中所需传递的数据,比如,界面输入的值,后台获取的值,等等,通常对应一个后台的vo类。

2.对界面对象的控制;

举例:我们常常会遇到这样的问题,在一个控件A中项要操作另一个控件B,比较麻烦,论坛上也常有这种问题。其实我们完全可以在 valueObject里面声明一个B控件的引用,然后在A中就可以操纵Model中的valueObject对象里面的B控件的引用(因为是按引用传递 的),就可以达到控制B的目的。

3.对数组绑定对象的控制,如list,将其绑定在一个数组,通过改变数组就可以改变该List。

4.防止flag变量;

5.可以用在自定义事件中,传递参数;

◆Model:model主要就是利用ValueObject来实现全局变量,(注意:在Flex中是没有全局变量一说的),所以使用Model和 单例模式,来实现全局数据的控制。(什么是单例模式?就是一个类,在一个程序中,只存在一个对象。这个概念在java中也有用到)。

以上介绍的是数据组,接着是控制组。

◆Command:command其实就是函数,继承自Command类。

◆Event:event的功能就是给界面调用command提供方便。

◆Controller:真正使command和event发生关系的还是controller。它其实相当于添加事件监听,触发某某事件,该相应什么command,都在这里面定义。

◆Delegate:对于远程数据的访问,Cairngorm是以用委托类,来获取数据然后传给调用函数。

所以,可以看出,在控制方面,Cairngorm框架很有优势的。

◆接下来就是View了。

Flex的一大好处,就是方便模块化编程,View包里面就是放的是自定义组件,在设计阶段,设计好的各个模块,都可以放置在这个包里面。以备以后代码重用。

下面通过个流程图讲解一下Cairngorm的工作流程,

1、在view触发Event:var loginevent:UserLoginEvent = new UserLoginEvent(user);

loginevent.dispatch();

如新建一个UserLoginEvent 然后将它发出。

2、这里UserLoginEvent是继承自CairngormEvent的,在UserLoginEvent中执行父类的方法就可以了,super(EventTypes.USER_LOGIN,true);

this.user = user;同时将user传递过去(其中EventTypes.USER_LOGIN,是EventTypes类中定义好的常量)。

3、在Controller中将EventTypes.USER_LOGIN,和相应的Command进行绑定。

private function addCommadListener() : void {

//监听登录事件 执行UserLoginCommad

addCommand(EventTypes.USER_LOGIN,UserLoginCommad);

4、然后就会在Command中新建一个委托类,通过委托类实现调用后台的java方法。

var syslogin:LoginDelegate = new LoginDelegate(responder);

syslogin.login(loginEvt.user);

5、委托类中进行了和后台的交互:public function LoginDelegate(responder:IResponder)

{

_remoteobject = serviceLocator.getRemoteObject("login");

_responder = responder;

}

public function login(user:User):void

{

var call:Object = _remoteobject.login(user); // 调用服务器的方法

call.addResponder(_responder);

}

然后通过执行Command中相应的result和fault方法处理结果,就是实现了flex和后天的交互:

var responder:Responder = new Responder(result,fault);

flex的Cairngorm框架的更多相关文章

  1. Flex Cairngorm框架知识整理

    简介: Cairngorm是一个开源的Flex项目,为FLex提供了一个类似MVC的体系结构框架,它是Flex RIA开发的最好框架之一.使用Cairngorm框架可以大大提高开发和维护的效率. Ca ...

  2. Flex开发框架cairngorm入门实例

    Cairngorm是flex开发的mvc框架,现在在 adobe旗下.它架构和eclipse插件开发gef架构很相似,具体工作原理如下: 该框架就是一个Cairngorm.swc文件,大家可以到Cai ...

  3. Flex入门(三)——微架构之Cairngorm

    大家都知道我们在开发后台的时候,都会使用MVC,三层等分层架构,使后台代码达到职责更为分明单一,高内聚低耦合,比如,Dao层仅仅是进行和数据库打交道,负责处理数据:Service(B层)仅仅是进行逻辑 ...

  4. [转]Flash、Flex、AS3.0框架及类库资源收集之十全大补

    原文地址:http://www.d5power.com/portal.php?mod=view&aid=27 APIs.Libs.Components1.as3ebaylibhttp://co ...

  5. Flex相关案例及资源搜集

    Flex一些例子: http://blog.minidx.com/ 上千个Flex例子,对于学习者来说是一个庞大的资源宝库. http://fleksray.org/Flex_skin.html ht ...

  6. Flex 开发框架汇总

    1.现有成熟Flex框架   Cairngorm (Adobe Open Source) - MVC framework   PureMVC (Open Source) - MVC framework ...

  7. Flash&Flex大全

    官方在线帮助(没标英文的都是中文) 用于 Adobe Flash Platform 的 ActionScript 3.0 参考 更多参考使这样的链接下载离线版:http://help.adobe.co ...

  8. Flex Viewer

    一.Flex Viewer简介 Flex Viewer是ESRI公司推出的可以高效开发基于WEB的地理信息应用系统的一种完全免费的应用程序框架.业务人员使用该框架可以无需任何额外的编程就能够通过简单配 ...

  9. Flex Viewer(三)——Config的原理

    一.概述 在上文<深入浅出Flex Viewer(二)——体系结构>中,笔者详细介绍了到Flex Viewer框架,使得读者能够对该框架源代码的关键目录和文件结构和这些文件中所包含或涉及到 ...

随机推荐

  1. Android手机平板两不误,使用Fragment实现兼容手机和平板的程序

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/8744943 记得我之前参与开发过一个华为的项目,要求程序可以支持好几种终端设备,其 ...

  2. Dell R410 broadcom网卡驱动更新失败

    问题描述: 最近遇到一个Dell R410 broadcom网卡驱动更新失败的问题.从官网上下载的驱动在安装的过程中都会自己回滚回来,很是困惑. 尝试解决: Dell官网现在提供的驱动一般最少有两种格 ...

  3. 黄聪:wordpress自定义post_type,并且自定义固定链接

    <? class zsjh { function init() { add_action( 'init', array($this,'create_zsjh') ); add_filter('p ...

  4. 黄聪:C#图片处理封装类(裁剪、缩放、清晰度、加水印、生成缩略图)有示例(转)

    C#图片处理示例(裁剪,缩放,清晰度,水印) 吴剑 2011-02-20 原创文章,转载必需注明出处:http://www.cnblogs.com/wu-jian/ 前言 需求源自项目中的一些应用,比 ...

  5. CXF发布restful WebService的入门例子(服务器端)

    研究了两天CXF对restful的支持.   现在,想实现一个以 http://localhost:9999/roomservice 为入口, http://localhost:9999/roomse ...

  6. [jQuery].scrollTop() 函数详解

    scrollTop()函数用于设置或返回当前匹配元素相对于垂直滚动条顶部的偏移. 当一个元素的实际高度超过其显示区域的高度时,在一定的设置下,浏览器会为该元素显示相应的垂直滚动条.此时,scrollT ...

  7. NeHe OpenGL教程 第三十九课:物理模拟

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  8. 值不能为 null 或为空。参数名: linkText

    “/”应用程序中的服务器错误. 值不能为 null 或为空.参数名: linkText 说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的 ...

  9. php判断用户客户端是否是微信内置客户端

    微信内置浏览器的渲染方式在某些方面和其他浏览器不同,所以有时候需要做一些兼容性处理,那么就需要判断是否是微信内置浏览器.最好的判断方式就是通过 User Agent 来判断. 工具/原料   php ...

  10. bootstrap-输入框组

    <!-- input-group 只能针对输入框,输入框组 input-group-addon 给输入框前后添加的额外元素 input-group-btn 添加的额外元素是按钮: --> ...