介绍Cairngorm~~

Cairngorm是一个用于开发Flex应用程序的轻量级微架构框架。它通过一系列设计模式提高了程序的可扩展性和可维护性。框架主要包括业务逻辑、命令、控制、数据模型、视图及值对象等部分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是Cairngorm

Cairngorm微架构是一个 轻量级的RIA开发框架。

Cairngorm主要就是对开发Flex应用程序应用了一系列的设计模式,从而使开发出来Flex程序可扩展性,可维护性都大大提高。其工作流程很清晰:

1.Front Controller Listens for User Gestures
前端的控件监听用户的行为。注意它只是监听,并不会做任何反应。

2.Commands Do All the Work
控件监听以后调用Commands来做相应的事情,Command做了所有工作。

3.Delegate Server-Side Business Logic to Business Delegates
把服务器端的业务逻辑委托到 Bussiness Delegates中。因为很多时候command需要获得服务器端数据,所以这样一来它可以直接调用Bussiness Delegates而不用关注如何连接数据的细节,实现了信息隐藏。

4.Business Delegate Finds Services with the Service Locator
Command调用Business Delegate 后,Business Delegate 通过Service Locator来找到相应的RPC services,然后执行实现从服务器端取数据。

5.Transfer Data as Value Objects
把传输过来的数据存储为Value Objects。这点大家应该都很熟悉,比如想要查询一个公告,就必定创建一个公告类,来存储每一个公告的标题等信息。

6.Store State in the Model Locator and Let Model Notify View
在Model Locator 保存状态并且能使Model检测到View的变化。这样一来用户操作就能直接影响Model,比如添加物品到购物车,Model中的购物商品就会自动增加。

在Cairngorm基础上开发RIA, 将会在大大提高开发和维护的效率。.

Cairngorm本身并不是一个完整的企业应用, 它只是提供了一个开发的骨架, Adobe称之为体系.在这个体系中包括以下几个部分:

1. Business(业务逻辑部分)

2. Command(命令部分)

3. Control(控制部分)

4. Model(数据模型)

5. View(界面视图)

6. VO(ValueObject)


Cairngorm框架最新版本是2.2,是面向Flex 3.0的,如果你用的事Flex 2那么你应该使用Cairngorm 2.1。你可以到这个网站下载到框架源码、例子贺文档 http://www.cairngormdocs.org/

在这里我们将对Cairngorm框架中的各个部分进行一个简单的介绍。

Control部分
Control中有3个基类: CairngormEvent, CairngormEventDispatcherFrontController

CairngormEvent继承与flash.event.Event, 他包含一个data成员,用来传递参数数据之用。

CairngormEventDispatcher是一个单例类(singleton),用来广播用户发起的动作类事件(CairngormEvent),主要的调用方法是CairngormEventDispatcher.getInstance().dispatchEvent().

FrontControllers可以说是控制中心。在这里你要做的工作是将事件(CairngormEvent)和命令(Command)之间的映射关系注册在它的成员中( 该成员类型是Dictionary),通过下面的类似方法进行注册。addCommand(OrderRequestEvent.EVENT_GETUSERORDERREQUESTS, GetUserOrderRequests);

如此一来,凡是CairgormEventDispatcher广播出来的事件都会在这里进行查找,找到某个event对应的command,然后会执行command的execute()方法。

FrontController必须要在你的系统中实例化,具体的实例化方法如下:

<mx:Application xmlns:control="com.domain.project.control.LoginController" ... >

<control:LoginController />

</mx:Application>

Command部分
在Command中定义了ICommand接口,在2.0中叫Command,其实没有区别,只不过是名字上的修改更能体现接口的意思罢了。在ICommand接口中定义了一个唯一需要实现的方法execute(),这其实就是典型的命令模式,我们要做的就是实现此接口,并不需要关心命令模式的具体实现方式。

Model部分
在Model中定义了接口ModelLocator,我们只需要实现该接口,并把所有需要办绑定的数据放在这里就可以了。一般我们都采用单例模式(Singleton)来实现,而且根据项目模块进行分类,而不是一股脑儿的把所有数据都扔到这里了事。可以说ModelLocator是系统的数据中心。



Business部分

在Business中定义了接口IServiceLocator,另外的Responder已经在2.1中被mx.rpc.IResponder代替了。我们需要将所有的RPC服务登记在该接口中,采用mxml的形式来单例实现IServiceLocator,如下面的例子所示:

<cairngorm:ServiceLocator xmlns:mx="http://www.adobe.com/2006/mxml"

xmlns:cairngorm="com.adobe.cairngorm.business.*">

<mx:HTTPService url="broker/heartbeat.action"

result="event.token.resultHandler( event )"

fault="event.token.faultHandler( event )"

showBusyCursor="false"

useProxy="false"

resultFormat="e4x"/>

<!-- Remote Object -->

<mx:RemoteObject destination="OrderManagementService" showBusyCursor="true" result="event.token.resultHandler( event );" fault="event.token.faultHandler( event );">

</mx:RemoteObject>

</cairngorm:ServiceLocator>

并且需要在系统中实例化一个ServiceLocator,如下面所示写在Application中:

<business:Services />

使用方法:

在某个Delegate中通过下面的方式得到该service的实例,之后就可以进行函数调用了:

this.service = ServiceLocator.getInstance().getRemoteObject( "orderManagement" );



View 部分
再来看看View中都有什么。View中有 ViewHelperViewLocator
ViewLocator是一个单例类,用于统一管理和获取ViewHelper。类似于ServiceLocator,和FrontController,在这里可以注册多个ViewHelper,并通过关键字直接找到需要的ViewHelper实例。
ViewHelper是具体用来操作某个视图的类,它是通过其成员变量view来引用到具体的视图,当它被实例化的时候就会在ViewLocator中注册一个ViewHelper
如:
<viewhelper:ListViewHelper />
将实例化一个ViewHelper,并在ViewLocator中注册一个名为listViewHelper的ViewHelper实例,通过该id可以得到其实例的引用,如:
var listViewHelper:ViewHelper = (ViewHelper )ViewLocator.getInstance().getViewHelper("listViewHelper")

VO 部分
最后提一下vo, 其实IValueObject和ValueObject没有任何实际作用,唯一的就是提高vo类的可读性,表示该类是一个ValueObject,可能是为将来设计用的。我们不需要实现任何接口函数。
内容概要:本文详细探讨了双馈风力发电机(DFIG)在Simulink环境下的建模方法及其在不同风速条件下的电流与电压波形特征。首先介绍了DFIG的基本原理,即定子直接接入电网,转子通过双向变流器连接电网的特点。接着阐述了Simulink模型的具体搭建步骤,包括风力机模型、传动系统模型、DFIG本体模型和变流器模型的建立。文中强调了变流器控制算法的重要性,特别是在应对风速变化时,通过实时调整转子侧的电压和电流,确保电流和电压波形的良好特性。此外,文章还讨论了模型中的关键技术和挑战,如转子电流环控制策略、低电压穿越性能、直流母线电压脉动等问题,并提供了具体的解决方案和技术细节。最终,通过对故障工况的仿真测试,验证了所建模型的有效性和优越性。 适用人群:从事风力发电研究的技术人员、高校相关专业师生、对电力电子控制系统感兴趣的工程技术人员。 使用场景及目标:适用于希望深入了解DFIG工作原理、掌握Simulink建模技能的研究人员;旨在帮助读者理解DFIG在不同风速条件下的动态响应机制,为优化风力发电系统的控制策略提供理论依据和技术支持。 其他说明:文章不仅提供了详细的理论解释,还附有大量Matlab/Simulink代码片段,便于读者进行实践操作。同时,针对一些常见问题给出了实用的调试技巧,有助于提高仿真的准确性和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值