Cairngorm框架使用总结

本文介绍了Cairngorm框架的MVC分层架构及其实现逻辑,详细分析了从事件触发到数据更新的全过程,并提供了关键代码示例。

Cairngorm框架使用总结

        

        从8月份开始接触Flex,因为要着急上项目,所以把在最短的时间最快的熟悉Flex成为了那段时间的主要任务。我和大多数在网络是搜索Flex学习教程,框架应用示例讲解资源的童鞋是有着一个共同的经历,熟悉其他的一些编程语言,了解一些事件驱动的实质内涵。但是作为一个普通人,想要尽快的去熟悉Flex ,如若有一些javascript和ajax的编程经验 会更好一些(Flex中的语法和javascript很类似,并且有事件监听和异步通信等特点。)。

 

        编程语言的通性有很多,数据类型、事件方法、控件应用,这些都是可以靠以前的语言基础来即时应用的,略微不同的可能就是一些属性、事件的名称变化,还有Flex的一些特殊效果和安全机制了。

 

       我从熟悉Flex基础到接触Cairngorm框架,也就是个三五天的时间。当时接触到Cairngorm框架,从定义上来看,并没有那种了然于胸的感觉,从MVC分层来看待Cairngorm框架,若是没有进行Flex编程的话,一下子搞明白这个框架流程图(如下图)的详细含义,还是有难度的。这是一个非常详尽和简单的示意图,以下我主要分析一下这个流程图,以此将Flex中数据绑定,事件广播,远程调用等知识点关联起来。本文旨在帮助大家进一步了解Cairngorm框架,如需Demo,Q我即可。

 

       1.  宏观来看,这是一个MVC分层架构模型,并由以下7部分组成。

        即按照流程图中的部分描述,可以得到以下信息。

         a) Model(数据模型M):使用singleton(单例)模式共享变量;全局变量、页面的数据绑定

         b) VO Value Object):储存特定值对象变量。Flex端实体类,通过Event机制作为参数传递

         c)  VIew(视图V):将Model的数据绑定互组件并广播侦听Cairngorm Event;

         d) Controller(控制器):侦听Cairngorm事件并将其映射到Cairngorm Command;Flex特殊机制,来把Event和 Command关联起来

         e)  Command(命令):调用Cairngorm Delegate或其它Command ,并更新Model;调用代理类实现业务逻辑或直接在Flex端实现业务逻辑

         f)  Delegate(委托):实例化RPC(远程过程调用)并将其结果返回给Command;通过配置文件调用服务器端类方法实现业务逻辑

         g)   Business(业务):定义RPC。

 

        2. 从细节角度去分析这个框架流程,需要有一定的面向对象编程经验。

      从View入手:My Contancts页面,体现的业务逻辑就是通过Add Contact将个人联系方式添加到右侧的List of Contacts中。

         当点击 Add Contact 按钮,会触发如下事件,将当前页面中的数据封装到VO(Value Object)中的ContactVo里面,然后将ContactVo实体对象以传参形式通过Cairngorm Event机制传递。通过实例化一个AddContactEvent,然后dispach() 掉这个对象,这样框架内部会进行一个事件广播和事件捕获。

 

       3. 接着看一下继承了Cairngorm Event 的AddContactEvent类。具体内容如下图,定义一个属性变量(从页面传参过来的实体类)或者还有其他一些标志量(如,定义一个flag来标示当前调用事件为Add或Update等事件)。这里需要注意将当前Event名称指定给父类(super)下图中的AddContactControl.EVENT_ADD_CONTACT为FrontController中定义的一个常量,用来标示当前Event的一个名称。

 

      4. 事件进行捕获,通过FrontController中继承FrontController的AddContactControl类来将上面的Event和Command进行绑定。 这样,当捕获到AddContactEvent的时候,会自动调用相应的AddContactCommand类。

 

      整个框架实现逻辑的部分就是在Command这部分,在这里我们一般会调用Delegate(代理)类,通过这样调用Remote ObjectClass 来实现逻辑。

      同样AddContactCommand 实现了Command和Responder(利用其回调函数机制)接口 ,按照框架流程图

 

      onResult方法会在Delegate类中相应方法正常执行后被调用。如下图所示,在该方法执行中会将当前Event中传参传递过来的VO实体类添加一个全局变量contacts(位于model中,直接在页面的List of Contact上进行数据绑定)中去,由于Flex中数据绑定的特点(双向性),页面会自动将数据更新,显示当前已经添加进去的一条记录。

 

       5.  Delegate类作为某个Remote Object的代理,需要进行如下配置,Flex和服务端(如Java)进行交互,需要配置service。 

      关于Flex与Java交互的实现,可参照:《Flex前端与Java服务端交互,反射机制挑大旗 》

 

 

 

参考资料:

      Flex3的在线控件使用大全:http://examples.adobe.com/flex3/componentexplorer/explorer.html

     Cairngorm框架流程介绍 :http://www.cairngormdocs.org/tools/CairngormDiagramExplorer.swf

 

下载前可以先看下教程 https://pan.quark.cn/s/16a53f4bd595 小天才电话手表刷机教程 — 基础篇 我们将为您简单的介绍小天才电话手表新机型的简单刷机以及玩法,如adb工具的使用,magisk的刷入等等。 我们会确保您看完此教程后能够对Android系统有一个最基本的认识,以及能够成功通过magisk root您的手表,并安装您需要的第三方软件。 ADB Android Debug Bridge,简称,在android developer的adb文档中是这么描述它的: 是一种多功能命令行工具,可让您与设备进行通信。 该命令有助于各种设备操作,例如安装和调试应用程序。 提供对 Unix shell 的访问,您可以使用它在设备上运行各种命令。 它是一个客户端-服务器程序。 这听起来有些难以理解,因为您也没有必要去理解它,如果您对本文中的任何关键名词产生疑惑或兴趣,您都可以在搜索引擎中去搜索它,当然,我们会对其进行简单的解释:是一款在命令行中运行的,用于对Android设备进行调试的工具,并拥有比一般用户以及程序更高的权限,所以,我们可以使用它对Android设备进行最基本的调试操作。 而在小天才电话手表上启用它,您只需要这么做: - 打开拨号盘; - 输入; - 点按打开adb调试选项。 其次是电脑上的Android SDK Platform-Tools的安装,此工具是 Android SDK 的组件。 它包括与 Android 平台交互的工具,主要由和构成,如果您接触过Android开发,必然会使用到它,因为它包含在Android Studio等IDE中,当然,您可以独立下载,在下方选择对应的版本即可: - Download SDK Platform...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值