学习消息总线的体会!
来源:互联网 发布:mysql怎么下载旧版本 编辑:程序博客网 时间:2024/06/11 08:26
今天抽了点时间学习了下OperaMasks的消息总线,感觉它这个总体的设计思路还是非常棒,值得我们学习。
让我体会最深得一点就是解耦,用里面的比喻,就是演讲者(事件源)与听众(事件监听者)的解耦。
以前我在做基于构件的编程的时候,经常碰到的一个问题:一个事件源,而多个监听者要求去监听的时候,都必须把这个事件源的句柄给给引入进来。这就造成了代码的耦合度不好,而且不利于扩展。举例如下:
一个按钮 <mx:Button id='button' label='Helloworld!' width='100'/>
如果我有好几个监听器要对此button进行监听,那么我们要做的就是在每个监听器上给加上这个button的句柄:
button.addEventListener(MouseEvent.CLICK,eventhandle(event));
如果你是用pureMVC,更能体会到这点的不便之处。
OperaMasks的消息总线针对这一点进行了改进,它将事件源与监听者完全分开,即:事件源只管发事件,谁爱监听谁监听。不再需要句柄,完全解耦。举例如下:
页面:
<f:view xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core"
xmlns:w="http://www.apusic.com/jsf/widget" xmlns:layout="http://www.apusic.com/jsf/layout"
renderKitId="AJAX">
<w:page title="apply fee">
<w:form>
<layout:panelGrid columns="2">
<w:textField id="money"></w:textField>
<w:button id="apply" />
</layout:panelGrid>
</w:form>
</w:page>
</f:view>
事件源:
@ManagedBean(name="projectManagerBean", scope=ManagedBeanScope.SESSION)
public class ProjectManagerBean {
@EventListener("applyFee")
private void applyFeeListener(int money) {
System.out.println("I'm your project manager, you apply " + money + " money.");
}
}
事件监听者:
@ManagedBean(name="projectManagerBean", scope=ManagedBeanScope.SESSION)
public class ProjectManagerBean {
@EventListener("applyFee")
private void applyFeeListener(int money) {
System.out.println("I'm your project manager, you apply " + money + " money.");
}
}
一个事件源对要添加多个监听器,非常的简单,方便。
- 学习消息总线的体会!
- 开源消息总线eventBus学习
- 学习C#的体会
- 学习java的体会
- 学习<决定>的体会
- 学习的一些体会
- 学习的一些体会
- I2C总线的学习
- apache的强劲的消息总线服务
- 异步消息总线hornetq学习-01基于maven的客户端程序框架搭建
- 异步消息总线hornetq学习-02客户端连接hornet进行jms消息的收发-jndi方式连接
- 异步消息总线hornetq学习-03客户端连接hornet进行jms消息的收发-非jndi方式连接
- 谈消息总线客户端的多线程实现
- 谈消息总线的路由模型
- 消息和消息总线
- 消息总线扩展之面向消息的数据集成
- 浅谈消息总线与消息队列的区别
- 我学习python的体会
- Android--手势识别之GestrueDetector
- Mysql 配置 my.cnf 详解
- JavaScript 经典代码(收藏)
- MySQL 配置
- myeclipse平台中实现hibernate逆向工程
- 学习消息总线的体会!
- .NET信息笔记
- 第二次实训(3)
- csu 1245: 信使核糖核酸转录后剪接 水题不多说
- django调试
- 教你如何迅速秒杀掉:99%的海量数据处理面试题 作者:July 出处:结构之法算法之道blog
- Eclipse导入android工程,无法显示xml布局
- C#实现高精度定时器
- plan9port 使用经验