基于 Cairngorm MVC 框架的 Flex 程序设计与开发
- 格式:doc
- 大小:260.15 KB
- 文档页数:16
Cairngorm框架在Flex开发中的应用研究的开题报告标题:Cairngorm框架在Flex开发中的应用研究摘要:Flex是一个基于Adobe Flash技术的RIA开发平台,拥有丰富的UI组件及数据可视化组件,受到越来越多的开发者的欢迎。
在大型Flex应用中,数据流程的管理是一个重要的问题。
Cairngorm是Flex的一种MVC框架,其目的是为复杂的Flex应用程序提供一种清晰的体系结构。
本文将探讨Cairngorm框架在Flex开发中的应用,包括框架的基本原理、架构模式、组件之间的协作以及其在实际开发中的应用。
关键词:Flex、Cairngorm、MVC、数据流程管理1. 研究背景随着RIA技术的不断发展,Flex作为一个基于Adobe Flash技术的平台,受到越来越多的开发者的欢迎。
Flex通过其丰富的UI组件和数据可视化组件,提供了极佳的用户体验。
随着应用程序规模的扩大,对数据流程的管理也变得越来越困难。
因此,MVC框架的出现极大地简化了这一问题。
Cairngorm是Flex的一个MVC框架,目的是为复杂的应用程序提供一种清晰的体系结构。
2. 研究目的本文旨在探究Cairngorm框架在Flex开发中的应用研究,包括框架的基本原理,架构模式,组件之间的协作以及其在实际开发中的应用。
3. 研究内容本研究将涉及以下内容:(1)MVC模式和Cairngorm框架的基本原理(2)Cairngorm框架的架构模式和组件之间的协作(3)基于Cairngorm框架的实际开发案例(4)Cairngorm框架的应用优缺点分析4. 研究方法本研究将采用文献研究法、案例分析法和实验研究法。
通过文献研究法对相关文献进行收集、整合和分析,对Cairngorm框架的基本原理、架构模式和应用进行深入了解;通过案例分析法,对Cairngorm框架在实际开发中的应用进行详尽分析;通过实验研究法,对Cairngorm框架和其他框架进行比较和实验。
做Flex做久了做大了,就会觉得之前写的的Flex代码开始有点乱,哪怕你写的规范了,但总觉得结构松散,维护不方便,相信很多人刚开始做Flex的时候,都是想到什么功能,就写什么功能,或者有些好点的,就先画了个大体的流程图之类的,因为现在Flex普及得还不够,很多人做Flex也是试探阶段,不敢用作商业项目或其它大项目,只会用来试水技术层面的,所以都是做些小应用的多,就会忽略了设计一个比较好的框架来开发。
所以Flex的开发框架就应运而生了。
目前,好的Flex开发框架还不多,官方有个Cairngorm的框架,可能有些人会说这个框架有点复杂,其实不然,对比起Ruby的Rails,Java的Struts,Spring之类的开发框架,就显得简单得多了。
只要清楚了解要MVC的概念,就会对这些框架并不陌生,但是今天的主角不是Cairngorm,而是另一个Flex框架PureMVC,如果说Cairngorm复杂的话,那么PureMVC就显得简单多了,PureMVC比较轻盈,核心也只有十来个类,是一个轻量级的Flex 框架,但PureMVC的通用性还是比较广的,有PHP的,有Java的有Python的。
可能直接说框架的使用会比较抽象,那么就由一个实例来开始讲解吧,就用一个PureMVC做的一个MP3播放器。
先来看看PureMVC的结构图:在图中,Facade,Model,View,Controller都是PureMVC的四个核心类,都是单例模式的,用户无需操作那Model,View,Controller类,而用户只需要操作Facade就够了,Facade类用来管理其它的三个单例类,顾名思义,那三个类都是分别对应MVC 模式的那三个元素,Facade也是个单例,它负责创建,激活,调用其它的三个类,管理MVC各屋的生命周期。
而我们看看Model类,又细分了一个Proxy类出来,我们称其为代理吧,就是对数据模型的一个代理,负责访问我们的数据对象(Data Object)也就是Cairngorm中的ValueObject,其实都是同一个概念。
基于Flex的XX络课程设计与实现在20XX年公布,是目前最完善的ri(rich internet ppliction,富互联XX应用程序)技术。
基于flex与ri技术能将传统的桌面应用程序搬到扫瞄器里运行,具有更好的XX络交互能力、更绚丽的表现效果,使用相对简单的代码就可以完成绚丽高效的flex 程序[1]。
flex应用程序提供了一系列独特的功能,包括:表现力、高执行效率、丰富媒体支持、脱机支持等。
flex在XX络课程中的应用可以改变远程学习者与教学系统的交互方式,改进教学资源界面质量,带来良好的学习者体验[2]。
2田径XX络课程设计本文以田径课程为例,以flex技术为基础,进行了XX络课程的设计与开发实践。
本XX络课程遵循以下教学策略:(1)以自主学习为中心。
XX络课程在设计时坚持以探究性学习为指导,以学生为中心,促进学生自主学习。
本XX络课程中,学习者学习活动包括自选学习内容、自定学习进度、观看视频、观摩演示、自我评价、反馈等。
(2)以异步学习为基础。
现有XX络媒体更适合异步学习。
同时,异步学习更能体现学习的自主化和个性化。
(3)建立多元化学习环境。
XX络学习结合书本、光盘等实体学习资源,建立正确的技术表象,并将表象转化成为标准的动作技能。
将离线资源与XX络课程相结合完成学习目标。
(4)以协作学习为导向。
学习者利用XX络课程中的交流平台,相互讨论在学习中遇到的问题,弥补个别化学习的缺陷,提高学习效果。
通过对课程对象、课程内容、课程需求分析,田径XX络课程模块设计如图1所示。
图1田径XX络课程结构设计(1)理论学习。
涵盖田径各方面知识,相当于理论教学的教材。
但田径XX络课程不仅仅是文字教材的“复印”,需要将教学内容进行新的整合。
(2)视频教学。
课程制作过程中,首先收集国际优秀运动员动作示范录像,然后用视频编辑软件根据田径各项技术动作的特点和教学需要,化动为静、化快为慢,使学生学习既能感知动作技术全过程,又能了解动作技术各环节的细节。
有没有听说过这个奇怪的词汇:“Cairngorm”?如果你的回答是“No”&&你是Flex程序员,哪你就看看自己是不是住在一个井底。
Cairngorm是Flex的一个MVC框架结构,名字取自苏格兰的一个山脉。
(kao,如果是我建立一个自己的框架结构,我就取名叫:“xxx”。
)有关这个框架,在网络上有很多图表用来讨论。
下面是我所理解的框架图表:使用Cairngorm的第一步是建立框架结构的骨架,包括了三个对象:Model Locater;Service Locator;Front Controller;Model Locator:承载了组件之间的所有的传递的信息和数据,这是一个Bindable(可绑定的)对象。
Service Locator:定义了与数据源(Httpservice,Webservice,Remoteobject)之间通讯的界面。
Front Controller:建立播送事件(Dispatch event)和命令层(command)之间的对应关系(mapping)。
看一下相关的代码:BuddyAppModelLocator.as:Xml代码1<em>package com.ny.flex.cairngorm.model2{3import er;45import mx.collections.ArrayCollection;67[Bindable]8public class BuddyAppModelLocator9{10public var buddyList:ArrayCollection=new ArrayCollection();11public var loginUser:User=new User();12public var viewStackSelectedIndex :int = 0;1314static private var __instance:BuddyAppModelLocator=null;1516static public function getInstance():BuddyAppModelLocator17{18if(__instance == null)19{20__instance=new BuddyAppModelLocator();21}22return __instance;23}24}25}26</em>在Model Locator代码中,定义了三个public的变量,buddyList:用来存放由数据库获取的密友列表;loginUser:定义一个User类型对象;viewStackSelectedIndex:定义viewStack指向的视窗。
英语电子教案设计中Flex平台的开发及应用Flex平台是一种用于英语教育领域的电子教案设计和应用工具。
它是一种基于网络的软件平台,可以帮助教师更高效地创建和分享教案。
本文将介绍Flex平台的开发过程以及在英语教育中的应用。
一、Flex平台的开发过程Flex平台的开发过程可以分为以下几个关键步骤:1. 需求分析在开发Flex平台之前,开发团队需要与英语教学专家、教师和学生等多方面的利益相关者进行沟通,明确需求。
这一步骤非常重要,因为只有准确理解用户需求,才能开发出满足用户需要的Flex平台。
2. 界面设计Flex平台的界面设计需要考虑用户的易用性和美观性。
开发团队可以根据用户反馈和市场研究结果,设计出直观、简洁、用户友好的界面。
通过合理的布局和清晰的导航,教师和学生可以轻松地使用Flex平台。
3. 功能开发Flex平台的功能开发是关键的一步。
根据需求分析的结果,开发团队可以开发出各种实用的功能,如教案创建、资源分享、在线批阅等功能。
还可以添加一些创新的功能,如智能推荐和学习分析等,以提升教学效果。
4. 测试与优化在开发过程中,测试与优化是必不可少的环节。
开发团队应该进行充分的测试,发现并解决潜在的问题和bug。
同时,根据用户的反馈意见,对Flex平台进行优化和改进,以提供更好的用户体验。
二、Flex平台在英语教育中的应用Flex平台在英语教育中有以下几个主要应用方面:1. 教案创建与分享Flex平台允许教师快速创建、编辑和共享电子教案。
教师可以根据教学目标和教材内容,灵活地设计教案。
同时,教师还可以将自己的教案分享给其他教师,促进教学资源的互通。
2. 资源整合与推荐Flex平台可以整合各类与英语教育相关的资源,如课件、教学视频、练习题等。
基于学习者的个性化需求和学习历史,Flex平台可以智能推荐适合学生的学习资源,提供个性化的学习支持。
3. 在线互动和评价Flex平台可以促进教师和学生之间的在线互动和交流。
基于Flex的电子商务网站框架设计与实现摘要:该文针对电子商务这样典型的以数据为中心,存在大量用户的系统,为了丰富用户体验、提高互动性,提出了基于Flex+J2EE 框架下的电子商务网站的设计方案与实现方法。
该方案提升了电子商务系统的开发与维护效率,为现有遗留系统引入RIA框架提供了可靠方案。
关键字:RIA Flex 电子商务框架随着电子商务规模的不断扩大,电子商务网站建设的优劣直接影响电子商务的效果。
传统的Web电子商务网站一般都采用页面表现内容、由服务器端传递数据的开发模式。
其客户端是浏览器,主要是靠服务器端程序来处理相关业务程序,这种模式易于管理,安全性高,而且硬件花费较少,但同时也存在着缺乏灵活性、服务器端遇到网络带宽问题、应用程序缺乏丰富的用户界面及高效的多媒体处理性能等缺点。
因此,为了满足用户更高的、更全方位的使用体验要求,就需要功能更加强大的表示层。
于是,被称为富互联网应用(简称RIA)的、具有丰富用户体验和高度互动性的网络应用模式应运而生。
1 Flex技术简介Flex技术由MXML、ActionScript及Flex类库三部分组成。
MXML 是用来描述Flex程序视图部分的基于XML的标记语言,主要用来呈现Flex的用户界面,也包括一些不可见元素,例如数据绑定、访问数据源等。
ActionScript是一种基于ECMAScript的面向对象编程语言,主要负责实现和控制客户端程序逻辑。
Flex还提供了一个丰富的类库,包括了各种Flex容器和控件、行为组件、数据绑定组件及其他功能组件[1]。
这些组件作为辅助,来加快整个开发的进程。
2 电子商务网站功能设计基于Flex技术开发的电子商务网站,彻底改变了以往的交互过程,让顾客可以个性化地配置所选商品,并即时得到商品的最终效果,让顾客的购物过程更方便更快捷,极大的改善了顾客的购物体验。
2.1 需求分析对于电子商务这样的数据流量较大的数据库管理系统类网络管理系统,必须做到使用方便、操作灵活等设计要求。
基于Flex和J2EE架构的数据发布系统的设计与实现摘要:提出了开发基于Flex和J2EE架构的数据发布系统,应用Flex作为展现层实现,应用Hibernate作为持久层实现,结合Spring技术作为业务层实现,进行框架整合,从而设计了一套松耦合、可扩展的RIA数据发布系统,初步解决了当前数据发布中存在的问题。
关键词:RIA;数据发布;Flex;Spring框架;Hibernate框架为了解决Web应用程序中人机界面单调、交互性弱、开发效率低、用户体验差等一系列问题,产生了富因特网(Rich Internet Applications)技术,RIA程序是将桌面应用程序的用户交互体验与传统的Web应用的部署灵活性和成本分析结合起来的网络应用程序。
RIA中提供可承载已编译客户端应用程序(以文件形式,用HTTP传递)的运行环境,客户端应用程序使用异步客户/服务器架构连接现有的后端应用服务器,这是一种安全、可升级、具有良好适应性的新的面向服务模型。
作为最完善的RIA系统开发技术,Adobe Flex提供了一整套的RIA组件框架和运行时数据处理服务来构建复杂的网络应用程序,利用它可以开发出具有良好的软件体系结构、很好的兼容性和更具吸引力的用户体验的软件。
本文根据Web应用的经典分层理论,应用Flex 作为展现层实现,应用Hibernate作为持久层实现,并结合Spring技术作为业务层实现,进行框架整合,设计出一套足够灵活、松散耦合、可扩展性强、高效的数据发布系统。
1系统需求分析系统需求分析是系统项目成功的基础,需要按照软件工程方法进行全面合理的需求分析。
数据发布系统有着自身的特点和需求,现进行分析设计。
1.1系统流程分析系统参与者有系统管理员、数据管理员、普通用户3种,图1为参与者进入系统后的活动图。
图1系统活动图1.2系统功能性需求数据发布系统主要由3个功能模块组成:数据发布模块、用户管理模块、系统管理模块。
Flex:基于Flex-config.xml的命令行编译今天GTalk Flex讨论群上有位朋友就mxmlc编译的问题和我讨论了一天,他要在linux下使用命令行编译Flex,我就推荐他使用flex-config.xml文件的方式,为什么要推荐使用flex-config.xml的方式呢,flex-config.xml涵盖flex编译及其他控制的所有选项,对于命令行编译来说,mxmlc复杂的编译选项对于命令行的输入简直就是噩梦,而使用flex-config.xml可以方便的修改编译选项,并且一次修改就可以在后续的所有mxmlc编译过程中保存下来,还有个重要的地方,flex-config.xml文件是一个xml文件,更加的友好,而且其中每个参数都有详细的注释,对于我的调整编译参数也更方便。
因为Adobe的Flex文档有很多语焉不详的地方,为了避免大家在命令行编译过程中出现混乱,我们现在来仔细解释基于flex-config.xml编译过程的细节。
首先我们来对环境做些约定,定义以下几个变量以方便我们后面的行文:∙$SDK:Flex 2 SDK所在目录∙$frameWorks:Flex 2 框架根目录,一般为$sdk下面的frameworks∙$flexApp:flex项目的根目录。
该目录包含了我们项目的源码等。
首先我们我们使用mxmlc命令要导出一份缺省的flex-config文件,注意Linux下导出配置会报找不到flex-config.xml错误,这是个BUG,不要理他就可以了,实际文件已经导出成功:[bash]cd $SDK/bin./mxmlc -dump-config flex-config.xml这个导出的flex-config.xml将是我们以后编译flex的配置文件,所有的编译参数同将通过修改该文件来实现。
接着将上面的导出的文件复制到我们的flex应用根目录中:[bash]cp flex-config.xml $flexAPP因为flex-config配置文件的特殊性,要脱离flex框架使用改文件的话,我们还需要对flex-config.xml文件进行一点小小的修改,修复一下路径指向的问题:首先修改36行,将其中的:[xml]<path-element>libs/playerglobal.swc</path-element>修改为:[xml]<path-element>${flexlib}/libs/playerglobal.swc</path-element> 接着修改82、83行,将其中的[xml]<path-element>libs</path-element><path-element>locale/{locale}</path-element>改为:[xml]<path-element>${flexlib}/libs</path-element><path-element>${flexlib}/locale/{locale}</path-element>继续修改97行,将其中的:[xml]<manifest>mxml-manifest.xml</manifest>修改为:[xml]<manifest>${flexlib}/mxml-manifest.xml</manifest>最后,295-297行,将其由:[xml]<!-- load-config: load a file containing configuration options--><load-config>${flexlib}/flex-config.xml</load-config>修改为:[xml]<!-- load-config: load a file containing configuration options<load-config>${flexlib}/flex-config.xml</load-config>-->修改好后保存,然后使用如下方法编译flex:[bash]mxmlc -load-config flex-config.xml +flexlib=$frameWorks Flex_Test.mxml以上命令,假定您以及将$SDK/bin加入到了PATH中了,参数中的+flexlib=$frameWorks表示增加token flexlib的定义,定义该值为$frameWorks,以供flex-config.xml中使用。
Flex开发框架cairngorm入门实例2010-05-27 19:51Cairngorm是flex开发的mvc框架,现在在 adobe旗下。
它架构和eclipse 插件开发gef架构很相似,具体工作原理如下:该框架就是一个Cairngorm.swc文件,大家可以到Cairngrom的官方网站上去下载,我在这里提供地址:/wiki/display/cairngorm/Cairngorm然后新建一个Flex工程,有一个Cairngrom.swc包一定要引进去才行(一般放在libs文件夹里面),或者直接在build path中加入该包。
下面通过一个实例来说明Cairngorm框架如何使用。
我们做一个简单的图书录入显示功能,做完后界面如下:flex工程结构如下:第1步:定义VO,不妨假定一本书包含书名,作者,和单价。
代码如下,文件名为BookVO.aspackage com.dobodo.vo{public class BookVO{public var bookName:String;public var bookAuthor:String;public var bookPrice:String;public function BookVO(){}}}第2步:创建ModelLocator,该类为单例模式,用来放整个应用的数据。
package com.dobodo.model{import mx.collections.ArrayCollection;public class ModelLocator{static private var __instance:ModelLocator=null;[Bindable]public var BookAC:ArrayCollection = new ArrayCollection();static public function getInstance():ModelLocator{if(__instance == null){__instance=new ModelLocator();}return __instance;}}}第3步:现在我们就要开始设计我们的视图了,即我们的界面效果,它是一个Component,。
基于Cairngorm MVC 框架的Flex 程序设计与开发翟峰, 开发工程师, IBM吴镝, IBM 实习生, IBM简介:随着富互联网应用程序(Rich Internet Application) 的发展,Flex 也得到了迅速的发展,然后随着Flex 应用的项目的增大,传统的Flex 开发已经显得层次不清,维护困难,在这样背景下,基于Flex 的MVC 框架Cairngorm 应运而生。
本文将介绍系统的讲解Cairngorm,通过本教程的学习,您可以全面掌握使用Cairngorm 框架进行Web 开发。
本文的标签:xml, 体系架构标记本文!发布日期:2010 年8 月16 日级别:中级建议: 0 (添加评论)平均分(共0 个评分)Cairngorm 框架简介Cairngorm 是一种MVC 框架,它可以帮助开发者很好的组织代码,分层,从而使得代码更加清晰易懂,可以使设计者,UI 组件开发者,数据服务开发者并行工作,从而提高开发效率。
Cairngorm 由五大组件构成,分别作为存放数据的仓库(ModelLocator),存放服务的仓库(ServiceLocator),处理业务逻辑的命令(Command),自定义的用于触发命令执行的事件(Event),用于把事件映射到命令的前端控制器(FrontController)。
它应用了代理模式,命令模式,观察者和单例等几种设计模式。
回页首Cairngorm 详解ModelLocator: 用于保存应用程序的数据,与HttpSession 类似,区别主要在于数据是保存客户端,实现时将ModelLocator 实现为单例,所有的应用数据都存储在唯一的一个ModelLocator 对象中。
CairngormEvent: 这个类由Cairngorm 框架提供,位于包com.adobe.cairngorm.control,所有的自定义的事件类都必须继承CairngormEvent,在自定义事件类中定义VO 的引用,可以通过它来存储从V iew 层传递过来的VO。
ICommand: 命令接口,位于包mands,每个命令类需要实现ICommand 接口,命令类用于处理业务逻辑,通过实现其execute 方法来实现业务逻辑。
execute 方法以事件作为参数,通过传入的事件中包含的详细信息来进行相应的处理。
FrontController: 前端控制器,位于包com.adobe.cairngorm.control,自定义的前端控制器必须继承FrontController,它主要用于完成CairngormEvent 和ICommand 之间的映射。
CairngormEventDispatcher:CairngormEvent 的分发器,位于包com.adobe.cairngorm.control Delegate: 服务代理,一般定义一个Delegate 类,持有ServiceLocator 的引用,Delegate 类是唯一的了解Service 有关的类。
回页首系统处理流程图 1. 使用Cairngorm 后系统处理流程在基于Cairngorm 的应用程序中,应用程序的数据都放在一个仓库中,这个仓库就是ModelLocator,整个应用程序只生成维护一个ModelLocator 的实例,在需要数据的组件中引用这个实例。
比如视图需要数据进行渲染,那么视图就维护ModelLocator 实例的引用,在视图中触发事件后,事件通过前端控制器映射为一个对应的命令,然后命令通过调用服务代理,执行相应的逻辑,命令通过更新自身维护的ModelLocator 的引用,因为ModelLocator 只有一个,这样就相当于更新了视图。
回页首安装配置开发环境开始前先让我们来搭建我们的开发环境:下载并安装JDK( 本文使用版本为Sun JDK 6)下载并解压Eclipse( 本文使用版本为Eclipse Ganymede J2EE SR2 版本)下载并安装FB3_WWEJ_Plugin.exe(Flex Builder 4 plug-in for eclipse)下载并安装Tomcat 6.x安装FB3_WWEJ_Plugin.exe 过程中选中eclipse 安装目录。
回页首一个入门的例子前面我们讲解了Cairngorm 的基本概念和一些主要的角色和类,下面我用一个简单的员工管理系统的例子来进一步的理解开发过程。
下载并解压Cairngorm 2.2解压出来就是一个Cairngorm.swc 文件 新建Flex Project图 2. 新建项目Next 配置服务器图 3. 配置服务器点击Finish.将Cairngorm.swc 拷贝到项目的flex_libs 目录下。
在flex_src 目录下建好包结构图 4. 建立包结构每个包中存放的内容一目了然∙定义视图1在views 包中新建一个MXML Component, 基于Panel,取名为PeopleInfo.mxml,如图所示:图 5. 新建Panel在里面添加一个DataGrid, 还有一些文本框和按钮, 如图6 所示:图 6. 视图三、这里我们希望当Panel 加载完成后,从服务器读取xml 文件,将员工信息给读入DataGrid 中,这里,为了简单明了,仅仅定义了员工id 和name 属性。
所以在Panel 中添加属性creationComplete="LoadPersons();",然后添加<mx:Script>标签,并添加LoadPersons()方法,原型如下所示:清单 1. 原型publicfunction LoadPersons():void{}定义ModelLocator视图中的DataGrid 是需要数据进行渲染的,下面定义数据的仓库ModelLocator,该类维护一个ArrayCollection personInfos 的引用,它就是应用程序所需的数据。
新建一个Actionscript class,取名为ModelLocator.as,代码如下:清单 2. ModelLocator.aspackage model{import mx.collections.ArrayCollection;[Bindable]public class ModelLocator{private static var __instance:ModelLocator=null;//以下这个ArrayCollection用于填充DataGridpublic var personInfos:ArrayCollection = new ArrayCollection();public static function getInstance():ModelLocator{if(__instance == null){__instance=new ModelLocator();}return __instance;}}}ArrayCollection 对象personInfos 用于存储从xml 读出的员工信息。
∙定义事件在event 包中新建一个ActionScript class,取名为LoadPersonsEvent.as,该事件必须继承于CairngormEvent,通过CairngormEventDispatcher 来分发, EVENT_ID用来唯一的标识一个事件,代码如下:清单 3. LoadPersonsEvent.aspackage event{import com.adobe.cairngorm.control.CairngormEvent;public class LoadPersonsEvent extends CairngormEvent{//事件名称public static var EVENT_ID:String = "LoadPersons";public function LoadPersonsEvent(){super(EVENT_ID);}}}∙在页面中注册并分发事件在PeopleInfo.mxml 的<mx:Panel> 下面添加如下代码:清单 4.<mx:Metadata>[Event(name="LoadPersons",type="event.LoadPersonsEvent")]</mx:Metadata>type 属性就是类的完整路径。
在LoadPersons() 方法中添加如下代码:清单 5.var e:LoadPersonsEvent = new LoadPersonsEvent();e.dispatch();当事件分发后,通过FrontController 将事件映射为命令,然后命令更新ModelLocator 中的数据的时候,从而引起DataGrid 的变化,从中可以看出,需要在页面中维护一个ModelLocator 单例的引用, 代码如下:然后在<mx:Script> 中添加以下代码:清单 6.[Bindable]public var _model:ModelLocator = ModelLocator.getInstance();然后将_model.personInfos 作为DataGrid 的dataProvider, 为<mx:DataGrid> 添加如下属性:清单7.dataProvider="{_model.personInfos}"定义FrontController事件分发后,应该执行一个对应的命令,命令通过执行相应的业务逻辑,更新数据,从而视图得到更新,那到底事件和命令之间是如何映射的呢?在包control 中新建一个ActionScript class,取名为MyFrontControl.as,代码如下:清单8. MyFrontControl.aspackage control{import com.adobe.cairngorm.control.FrontController;import event.*;import commands.*;public class MyFrontControl extends FrontController{public function MyFrontControl(){super();//注册一个事件,将其与一个命令绑定this.addCommand(LoadPersonsEvent.EVENT_ID,LoadPersonCommand);}}}这里的addCommand() 方法将事件和命令关联起来, 第一个参数是事件的name,第二个参数是具体的命令类,这里LoadPersonCommand 还没有定义,编译错,下面就来定义LoadPersonCommand.定义Command新建一个ActionScript class,取名为LoadPersonCommand.as,实现ICommand 接口,命令调用服务代理完成相应的逻辑,然后通过更新数据,间接的反映到视图上,所以命令中需要维护ModelLocator 单例的引用,每个命令类的入口函数是execute() 方法。