flex的Cairngorm框架
由于要写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框架的更多相关文章
- Flex Cairngorm框架知识整理
简介: Cairngorm是一个开源的Flex项目,为FLex提供了一个类似MVC的体系结构框架,它是Flex RIA开发的最好框架之一.使用Cairngorm框架可以大大提高开发和维护的效率. Ca ...
- Flex开发框架cairngorm入门实例
Cairngorm是flex开发的mvc框架,现在在 adobe旗下.它架构和eclipse插件开发gef架构很相似,具体工作原理如下: 该框架就是一个Cairngorm.swc文件,大家可以到Cai ...
- Flex入门(三)——微架构之Cairngorm
大家都知道我们在开发后台的时候,都会使用MVC,三层等分层架构,使后台代码达到职责更为分明单一,高内聚低耦合,比如,Dao层仅仅是进行和数据库打交道,负责处理数据:Service(B层)仅仅是进行逻辑 ...
- [转]Flash、Flex、AS3.0框架及类库资源收集之十全大补
原文地址:http://www.d5power.com/portal.php?mod=view&aid=27 APIs.Libs.Components1.as3ebaylibhttp://co ...
- Flex相关案例及资源搜集
Flex一些例子: http://blog.minidx.com/ 上千个Flex例子,对于学习者来说是一个庞大的资源宝库. http://fleksray.org/Flex_skin.html ht ...
- Flex 开发框架汇总
1.现有成熟Flex框架 Cairngorm (Adobe Open Source) - MVC framework PureMVC (Open Source) - MVC framework ...
- Flash&Flex大全
官方在线帮助(没标英文的都是中文) 用于 Adobe Flash Platform 的 ActionScript 3.0 参考 更多参考使这样的链接下载离线版:http://help.adobe.co ...
- Flex Viewer
一.Flex Viewer简介 Flex Viewer是ESRI公司推出的可以高效开发基于WEB的地理信息应用系统的一种完全免费的应用程序框架.业务人员使用该框架可以无需任何额外的编程就能够通过简单配 ...
- Flex Viewer(三)——Config的原理
一.概述 在上文<深入浅出Flex Viewer(二)——体系结构>中,笔者详细介绍了到Flex Viewer框架,使得读者能够对该框架源代码的关键目录和文件结构和这些文件中所包含或涉及到 ...
随机推荐
- 在Visual Studio里配置及查看IL(转载)
原文地址:http://www.myext.cn/other/a_25162.html 在之前的版本VS2010中,在Tools下有IL Disassembler(IL中间语言查看器),但是我想直接集 ...
- NodeJS的异步编程风格
NodeJS的异步编程风格 http://www.infoq.com/cn/news/2011/09/nodejs-async-code NodeJS运行环境因其支持Javascript语言和异步编程 ...
- 转--Android按钮单击事件的四种常用写法总结
这篇文章主要介绍了Android按钮单击事件的四种常用写法总结,比较了常见的四种写法的优劣,有不错的参考借鉴价值,需要的朋友可以参考下 很多学习Android程序设计的人都会发现每个人对代码的 ...
- TNT平台
1, TNT平台 本词条缺少信息栏.名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! TNT平台中的开发平台是基于微软Jupiter平台的快速开发工具,开发者可以通过界面属性设定的方法来 ...
- JMeter使用技巧
在这此对新版本jmeter的学习+温习的过程,发现了一些以前不知道的功能,所以,整理出来与大分享.本文内容如下. 如何使用英文界面的jmeter 如何使用镜像服务器 Jmeter分布式测试 启动Deb ...
- 全文检索引擎Solr系列——solr入门
下载4.8.0版本,下载地址:http://archive.apache.org/dist/lucene/solr/4.8.0/ 解压后,得到文件夹视图如下: 解压缩solr,在example目录有s ...
- CentOS yum安装和配置MySQL(转载)
From:http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/07/3003278.html] 一.MySQL简介 说到数据库,我们大多想到 ...
- iOS设计模式反思之单例模式的进化
什么是单例模式? 单例模式想一个大独裁者,他规定在他的国度里面,所有数据的访问和请求都得经过他,甚至你要调用相关的函数也得经过它.学术一点就是,单例模式,为某一类 需求和数据提供了统一的程序接口.主要 ...
- 解决CI框架的Disallowed Key Characters错误提示
用CI框架时,有时候会遇到这么一个问题,打开网页,只显示 Disallowed Key Characters 错误提示.有人说 url 里有非法字符.但是确定 url 是纯英文的,问题还是出来了.但清 ...
- spring错误<context:property-placeholder>:Could not resolve placeholder XXX in string value XXX
spring同时集成redis和mongodb时遇到多个资源文件加载的问题 这两天平台中集成redis和mongodb遇到一个问题 单独集成redis和单独集成mongodb时都可以正常启动程序,但是 ...