一、Cairngorm运行机制
1.1 Cairngorm的大体工作流程
客户端界面是View组成的,View使用Flex的bingding绑定来显示ModelLocator中包含的数据。View根据诸如鼠标点击之类的用户动作产生Event。这些Event被FrontController“广播”并“监听”。FrontController会将Event映射到一个Command类。主要的业务逻辑在这个Command中处理,Command创建所需的委托Delegate,委托进行与后台交互数据以及得到数据,然后更新存储在ModelLocator中的数据。由于View是绑定到ModelLocator中的数据上的,所以View就自动更新了。
使用Cairngorm框架后,可以使基于后台调用的开发,条例清晰,增删功能简单。
1.2 一个功能涉及到的类
1.2.1自定义事件类此类
此类extends CairngormEvent;
1.2.2事件处理Command类
此类implements com.adobe.cairngorm.commands.ICommand, mx.rpc.IResponder.IResponder。
实现的接口方法:
1:execute( event:CairngormEvent ):void,当此事件被激发的时候,就执行此方法,原因下面将说明。
2:result( info:Object ):void和fault( info:Object ):void。
当使用mx.rpc.IResponder和RemotOjbect进行后台调用时,调用成功、失败的事件处理方法。
1.2.3事件监听注册Control类
此类extends FrontController,调用父类的addCommand方法,进行注册事件监听。
其父类FrontController的addCommand方法如下,commands是一个Dictionary,当注册时间监听时保存信息,通过事件名称保存处理此事件的Command类名。
当事件触发时,调出相应的Command类:var commandToInitialise : Class = getCommand( event.type );
实例化此类:var commandToExecute : ICommand = new commandToInitialise();
调用监听方法:commandToExecute.execute( event );
由于所有的Command类都实现了ICommand接口,所以都会去执行自己的execute方法。
public function addCommand( commandName : String, commandRef : Class, useWeakReference : Boolean = true ) : void { if( commands[ commandName ] != null ) throw new CairngormError( CairngormMessageCodes.COMMAND_ALREADY_REGISTERED, commandName ); commands[ commandName ] = commandRef; CairngormEventDispatcher.getInstance().addEventListener( commandName, executeCommand, false, 0, useWeakReference ); }
1.2.4数据存储类Model
此类implements IModelLocator,并且使用“单一模式”防止数据二义性。
1.2.4后台调用RemoteObject服务
需要使用Cairngorm提供的ServiceLocator,建立一个mxm文件基于ServiceLocator。在里面写RemoteObject服务;
1.2.5后台调用代理 GeneralServices
首先通过ServiceLocator得到注册好的RemoteObject:this.service = ServiceLocator.getInstance().getRemoteObject("remoteObject名称");
然后开始写调用的方法,用AsyncToken进行调用后的监听,通过addResponder方法指定处理类。
var call:AsyncToken = service.Logon(user.userName, user.password);
call.addResponder(处理结果类);
处理结构的类,必须implements mx.rpc.IResponder.IResponder接口,实现result和fault方法,一般为Command类。
1.3 一个功能的工作流程
①首先将“事件监听注册Control类”和“后台调用RemoteObject服务”,通过mxm标签形式初始化。
②用户通过界面交互,出发一个事件(按钮事件等),在此事件处理中new出对应的功能事件,然后调用dispatch方法。
③犹豫已经功过FrontController类的addCommand方法注册了事件监听,所以当事件发生时,会马上执行对应的Command类中的execute方法;
④在Command的execute方法中new出对应后台代理类,并调用对应功能方法;
⑤当后台结果返回时,根据成功失败,调用result 或 fault方法;
⑥得到的数据后,更新相应的modul 上的数据,界面上显示的数据级联更新。
相关推荐
7. **Presentation Model**(可选):虽然不是Cairngorm的一部分,但MVVM(Model-View-ViewModel)模式常与之结合使用,提供了一个更强大的视图绑定机制。 在提供的文件中,"library.swf"可能是Cairngorm框架的一个...
#### 一、Cairngorm框架概述 Cairngorm是一种专门为Adobe Flex设计的模型-视图-控制器(Model-View-Controller, MVC)架构模式框架。它通过清晰地分离应用逻辑,使得开发更加模块化、可维护性强,并且能够很好地与...
Flex框架是Adobe公司推出的一种基于ActionScript和Flash Player运行时的开发框架,主要用于构建富互联网应用程序(Rich Internet Applications,简称RIA)。Cairngorm是Flex社区中流行的一种轻量级MVC(Model-View-...
在“flex cairngorm框架实例 真正可运行直接导入”中,我们拥有的是一个可以直接导入并运行的示例项目。这表明该压缩包包含了一个完整的、配置好的Cairngorm框架应用,开发者无需额外配置或修改就能启动和测试。这...
5. 命令(Command)模式:Cairngorm的核心之一是命令模式,它定义了一个请求的结构,使得可以在不同的时间指定请求、队列请求,以及调用请求。每个命令类负责处理特定的业务逻辑,降低了耦合度。 6. 事件驱动:...
在提供的"Cairngorm"压缩包文件中,初学者可以通过查看和运行示例项目来学习如何在实际开发中应用这些概念。通过学习Cairngorm,开发者能够更好地理解如何组织Flex应用程序,提高代码的可读性和可维护性,同时利用其...
总结,"Cairngorm框架module学习三"的主题聚焦于Cairngorm的模块化设计,包括模块的创建、加载、通信机制以及如何利用源码和工具进行更高效地开发。通过深入理解和实践,开发者能够构建更加灵活、可扩展的Flex应用。
Cairngorm2是一种广泛应用于Flex开发的轻量级MVC框架,它旨在帮助开发者构建可维护、可扩展的Flex应用程序。本篇将深入解析Cairngorm2的核心概念,并结合BlazeDS这一消息传递框架,探讨两者的集成应用。 一、...
通过这个压缩包,学习者可以了解Cairngorm框架如何将业务逻辑、用户界面和数据流组织起来,以及如何使用事件驱动机制来协调这些组件。通过逐步分析和运行示例项目,能够加深对Cairngorm框架的理解,并将其应用到自己...
Flex是一种基于Adobe Flash Player或Adobe AIR运行时的开源框架,用于构建富互联网应用程序(RIA)。在Flex开发中,Cairngorm是广受欢迎的轻量级MVC(Model-View-Controller)设计模式实现,它提供了结构化和可扩展...
Cairngorm是Adobe Flex和ActionScript社区中广泛使用的一个轻量级MVC(Model-View-Controller)框架,它为富互联网应用(RIA)提供了结构和组织。这个框架由Adobe Systems的首席架构师Pete Nuwayser在2005年发布,其...
Flex3+Cairngorm+Spring的增删改查模块是一个典型的富互联网应用程序(RIA)开发实例,它结合了Adobe Flex3、Cairngorm框架和Spring框架,为小型用户提供了一个全面的CRUD(Create, Read, Update, Delete)功能。...
5. **事件(Event)**:事件是Cairngorm中的重要通信机制,用于不同组件间的通信。通过发布和订阅事件,各组件可以异步地协同工作。 6. **依赖注入(Dependency Injection)**:Cairngorm使用简单工厂模式来实现依赖...
5. **Event**:事件是Flex中的消息传递机制,Cairngorm使用自定义事件进行通信,例如CommandMessage,它允许命令之间或者命令与控制器之间传递信息。 6. **Proxy**:代理是数据访问层的一部分,用于封装对远程服务...
AIR是Adobe推出的一种跨平台的桌面运行环境,它允许Flex应用程序以桌面应用的形式运行,具有离线功能。在本示例中,AIR为用户信息管理提供了一个桌面环境,增强了用户的使用体验。 四、SQLite数据库 SQLite是一个...
Cairngorm 是Adobe官方最早推出的Flex开发框架之一。该框架采用了一系列设计模式(如单例、工厂、命令、代理等),使得Flex应用的可扩展性和可维护性得到了显著提高。然而,Cairngorm框架也存在一定的局限性,如结构...