`
wangguorui89
  • 浏览: 318301 次
  • 性别: Icon_minigender_1
  • 来自: 山西
社区版块
存档分类
最新评论

Cairngorm框架的使用记录

阅读更多
Cairngorm框架的使用记录--未完
Tags: Cairngorm, 框架, 记录
Cairngorm是adobe为flex工程师准备的mvc开源框架,据说与PureMVC一起号称flex届目前最好用的两个mvc框架。基于相信官方的心理,在项目开始的时候选择了Cairngorm作为我的产品的选择,虽然我到现在还读不清楚Cairngorm的发音(现在开源项目的名字越来越生僻)。
    Cairngorm可以在官方网站(http://opensource.adobe.com/wiki/display/cairngorm/Downloads)上下载到,其中有bin目录(包含编译好的swc文件),有doc目录(包含使用说明),当然还少不了src目录(包含所有的源码)。
    打开src目录,可以看到com.adobe.cairgorm下只有几个目录,代码量并不大,其中主要分为以下几个部分:
    business:主要使用的是ServiceLocator类,通过定义ServiceLocator类,可以通过http或是webservice或是remoteObject的方式访问服务器的对象。
    将ServiceLocator在应用中定义之后,就可以在项目中使用ServiceLocator.getInstance()[id];的方式来引用定义的服务。在我的项目中只定义了一个RemoteObject的服务作为后台访问的接口,与BlazeDs+Spring结合对后台java容器中的对象进行操作。
    commands:主要使用的有ICommand接口与SequenceCommand类。
      ICommand接口包含一个execute方法,如果自己写的Command要纳入Cairngorm的管理中,就必须实现ICommand接口。如果该Command与服务器进行交互,则可以让Command再实现Responder接口,即可在onResult方法中获取到远程调用返回值。
      SequenceCommand类能够使触发一次事件就执行一系列命令中,需要通过扩展SequenceCommand来得到。
    control:Cairngom的控制器就在这个package中,其中所包含的三个类都是必须使用到的。
       CairngormEvent:自定义事件的基类
       CairngormEventDispatcher:使用单例模式,用来在应用程序中分发自定义的event,代码如下:
               CairngormEventDispatcher.getInstance().dispatchEvent( new SelfEvent() );
       FrontController:应用程序自定义控制器的基类,用户继承FrontController后通过调用FrontController的addCommend方法来注册自己使用到的业务命令。例如:
       public class WideController extends FrontController{
            public function WideController(){
                   addCommand(LoginCommand.USERLOGIN, LoginCommand); 
                   addCommand(LogoutCommand.USERLOGOUT, LogoutCommand);
                   addCommand(RegisterCommand.USERREGISTER, RegisterCommand);                  
             }
       }
       addCommand事件将对应的Command注册到FrontController的缓存中去,CairngormEventDispatcher进行分发事件时能够找到对应需要执行的事件。
    model:有用到的只有IModelLocator接口了(ModelLocator接口现在已经不建议使用),实现该接口后可以将全局对象都放到IModelLocator中进行管理,IModelLocator的子类建议使用单例模式(毕竟是管理全局对象的,一个对象只要一个实例就好了)
    view:原先是用于管理全局的页面视图,在2.2版以后都不在推荐使用了。
    vo:能使用的只有IValueObject接口了(ValueObject接口不建议使用),这个接口并没有强制性要求使用,也没有任何方法,只是建议实现该接口让应用程序中ValueObject在不同的应用层面中传递数据是能有更好的可读性。
    其他:CairngormError用于捕获应用程序在使用cairngorm过程中跑出的例外,CairngormMessageCodes为cairngorm使用到的消息代码,主要为错误代码。这些代码的国际化信息在src下的locale目录里,目前只有en_US的语言,可以自行为消息添加中文。
    其实cairngorm框架的代码并不多,只要了解flex的事件机制,谁都可以写出这样的一个mvc框架,cairngorm的事件流程如下:


以下演示一个登陆操作的实例代码(使用工具为FlexBuilder):
0.将cairngorm包导入应用程序中。创建一个新应用程序LoginApp,右键点击项目选择属性->Flex BuildPath->Library Path,点击Add Swc选择Cairngorm.swc文件即可,完成后点击Ok关闭窗口。
1.创建vo与ModelLocator,并将vo注册到ModelLocator中去。
   public class UserVo
   {
      [Bindable]
      public var name:String;
      public var password:String;
      public var confirmedPwd:String;
    }
    public class WideModelLocator implements ModelLocator
   {
      private static var modelLocator : WideModelLocator;
      //当前用户信息
      [Bindable]
      public var userVo : UserVo;
      public static function getInstance() : WideModelLocator{
        if ( modelLocator == null )
          modelLocator = new WideModelLocator();
        return modelLocator;
      }
    }
    这样在用户登录后就可以在整个应用程序全局获取到当前用户信息。
2.通过继承FrontController来创建自己系统的Controller:
    public class WideController extends FrontController
    {
      public function WideController()
      {
        initialiseCommands();
      }
      public function initialiseCommands() : void {
          //TODO 此处用于注册新的命令
      }
    }
    之后需要在application中为controller添加一个引用为了能够在编译时将controller也编译进应用:
    <control:WideController id="controller"></control:WideController>
3.编写Business Delegate
4.编写command与event,并将command注册到FrontController中
5.创建视图,使用cairngorm框架
分享到:
评论

相关推荐

    Cairngorm框架学习

    对于初学者而言,Cairngorm框架提供了一套易于理解和使用的模式集合,有助于快速构建出高质量的应用。 #### 二、Cairngorm框架的核心理念 1. **基于模式的架构**:Cairngorm框架由多种设计模式组合而成,其中包括...

    Cairngorm 自己做的例子,简单易学

    标题中的“自己做的例子”意味着这个压缩包可能包含了一个使用Cairngorm框架创建的示例项目,这样的项目通常用于教学或自我学习,以便理解Cairngorm的核心概念和工作流程。 描述中的“简单易学”表明这个示例项目...

    网址收集 及工具下载 及相关记录

    压缩包内的文件 "Flex+UI+Design+For+Cairngorm.pdf" 提供了关于Flex用户界面设计与Cairngorm框架关联的主题。Flex是一种用于构建富互联网应用程序(RIA)的开源框架,它基于ActionScript和Flash Player。UI设计是...

    Flex_cairngorm_4.5做的增删改查效果(包括mysql数据库)

    Flex_cairngorm_4.5是一个用于构建富互联网应用程序(RIA)的框架,它结合了Adobe Flex和Cairngorm框架,为开发者提供了一种高效、可扩展的方式来设计和实现复杂的用户界面。这个框架特别适合开发具有增删改查(CRUD...

    Flex+Cairngorm+J2EE

    标题 "Flex+Cairngorm+J2EE" 暗示了这是一个关于使用Adobe Flex作为前端开发工具,Cairngorm作为MVC框架,并结合Java EE(J2EE)作为后端服务的项目。Flex是一种基于ActionScript和Flash Player的开源框架,用于构建...

    cairngorm2_rpc

    Cairngorm2_RPC 是基于Cairngorm2框架的一种实现模式,主要应用于Adobe Flex开发中的远程过程调用(Remote Procedure Call, RPC)。该模式通过清晰的组件划分与交互流程设计,实现了灵活而高效的客户端与服务器端...

    经典实例CairngormStore的分析

    CairngormStore是一个经典的实例,它展示了Adobe开发团队如何运用Cairngorm框架来构建富互联网应用程序(RIA)。这个实例特别适用于初学者,帮助他们理解Flex开发和Cairngorm框架的基础。CairngormStore模拟了一个...

    flexCairngorm增删改查

    在本文中,我们将深入探讨如何利用Cairngorm框架实现Flex应用程序中的基本操作:增、删、改、查。 Cairngorm框架的核心理念是分离业务逻辑、用户界面和数据模型,从而提高代码的可维护性和可扩展性。在...

    一年前整合flex3+cairngorm+spring+hibernate

    这个项目可能是一个企业级应用,通过Flex3构建用户界面,使用Cairngorm作为前端MVC架构,Spring作为后端的服务容器,并依赖Hibernate来处理数据持久化。通过这样的整合,开发者可以构建出一个高度模块化、可维护且...

    flex parsley IOC框架笔记

    接下来,我们来看看Cairngorm框架,它是Flex社区中较早的MVC框架之一,可以帮助理解Parsley的基础概念。在Cairngorm的例子中,我们看到: 1. **View(视图)**:这是用户与应用程序交互的部分,通常由MXML文件定义...

    使用cairgnorm做的相册

    《使用Cairngorm框架创建相册应用》 在IT行业中,开发富互联网应用程序(Rich Internet Applications,简称RIA)时,经常会用到Flex和ActionScript技术。这些技术为构建交互性强、用户体验良好的Web应用程序提供了...

    FLEX自定义的日历组件,带有日志记录功能

    在FLEX中实现日志记录,可以使用内置的logging API,如Log类,或者引入第三方日志库如 Cairngorm 或 PureMVC。日志记录不仅可以记录用户操作,还可以记录程序内部的状态变化,如数据加载、网络请求等。通过将日志...

    Flex游戏(掷骰子猜大小)

    在这个特定的案例中,我们讨论的是一个名为“DicingGame”的掷骰子猜大小的游戏,它利用了Cairngorm框架来组织和管理应用程序的结构和逻辑。 Cairngorm是ActionScript和Flex中的一个轻量级MVC(模型-视图-控制器)...

    基于 Flex的企业内部管理系统的设计与实现

    本文以上海某公司内部管理系统为案例,采用Flex技术结合Cairngorm框架和面向服务架构的中间件平台,成功设计并实现了一个高效、易于维护且具有良好用户体验的企业内部管理系统。该系统不仅能够统一管理企业的各项...

    spring actionscript 必须的.swc包

    Cairngorm是Adobe Flex中广泛使用的MVC(模型-视图-控制器)框架,这个版本的SWC使得两个框架能够协同工作,提升大型Flex应用的架构和组织。 这些`.swc`库的组合使用,可以帮助开发者构建更复杂、更健壮的...

    as_flex代码规范

    理解Flex架构,包括MXML和ActionScript的结合使用,以及 Cairngorm、BlazeDS等常用框架是关键。 3. **代码规范的重要性**: - **可读性**:遵循统一的代码规范可以提高代码的可读性,使得其他人更容易理解代码的...

    日志提醒 Flex界面开发

    4. **日志记录**:在事件处理器中,使用日志库的方法记录相关信息,包括事件类型、时间戳、相关数据等。 5. **日志提醒**:创建自定义UI组件,如提示框或通知区域,当记录到特定错误或警告日志时,显示提醒信息给...

    flex3的cookbook书籍完整版dpf(包含目录)

    使用Cairngorm框架生成器生成应用程序骨架 21.9节.学习常用的提高性能的技巧 21.10节.在组件中创建元数据 第二十二章.模块(Modules)和运行时共享库(RSLs)(669) 22.1节.创建一个运行时共享库 22.2节.使用跨域的RSL ...

Global site tag (gtag.js) - Google Analytics