云自无心水自闲

天平山上白云泉,云自无心水自闲。何必奔冲山下去,更添波浪向人间!
posts - 288, comments - 524, trackbacks - 0, articles - 6
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Cairngorm是Iteration::two的开源项目, 是使用macromedia Flex的RIA开发的最佳实践(best-practice)框架.
在Cairngorm基础上开发RIA, 将会在Iteration::two的专家体系和现有的灵活可维护企业解决方案中达到平衡.
Cairngorm本身并不是一个完整的企业应用, 它只是提供了一个开发的骨架, Iteration::two称之为体系.
在这个体系中包括以下几个部分:
1. Business(业务逻辑部分)
2. Command(命令部分)
3. Control(控制部分)
4. Model(数据模型)
5. View(界面视图)
6. VO(ValueObject)

我们从Control说起:
在Control中, 定义了3个基类: Event, EventBroadcaster, FrontController.
Event用于在应用不同的层之间传递事件, 并携带事件的数据. 包含type和data两个成员.
type存放一个区别不同事件的名称,将会在FrontController中进行注册.
而在命令(Command)类中, 会对事件进行响应.

EventBroadcaster是一个单例类(singleton), 用于广播用户动作对应的事件. 使用方法: EventBroadcaster.getInstance().broadcastEvent( ... )

FrontController稍微复杂一点点. 用于将特定的用户动作分发到指定的命令类.
FrontConroller是请求处理的核心类. 整个体系中遍布的EventBroadcaster.getInstance().broadcastEvent( ... )这样的调用,
都是用来通知监听控制器: 用户发出了请求. 在实际应用中, 开发者应该生成一个FrontContoller的子类,
并在构造函数中调用addCommand()注册预期事件的处理命令. FrontController的具体实现类应该创建一次而且只能创建一次.
通常的做法是这样的: 在主应用中, 将FrontController的子类作为一个Tag进行申明, 
 * <p>
 * <code>
 * <mx:Application  xmlns:control="com.domain.project.control.LoginController"        ... >
 *
 *        <control:LoginController id="controller" />
 *
 *  ...
 *
 * </code>
 * </p>
FrontController的处理实质上是这样的, 在调用addCommamd时, 将处理命令保存在数组中, 将与之对应的事件处理对象注册为FrontController本身,
在事件触发, 调用FrontController的handleEvent时, 调用executeCommand, 在executeCommand中, 先在数组查找出事件对应的命令,
调用命令的execute方法. 这就要求所有的命令都实现Command接口

(内容较多, 未完待续)




评论

# re: Iteration::two的基于Flex的开源项目-- Cairngorm store的学习笔记(一)  回复  更多评论   

2006-04-10 18:05 by cser
ok

# re: Iteration::two的基于Flex的开源项目-- Cairngorm store的学习笔记(一)  回复  更多评论   

2007-07-30 22:31 by 6215
我顶死你!!!!

只有注册用户登录后才能发表评论。


网站导航: