javax swing 事件监听学到的设计模式 观察者模式
2017-04-21 18:51
267 查看
事件监听机制的设计模式叫观察者模式,也叫订阅模式。
监听机制是这样的,swing的组件可以发起(触发)一个事件。这个事件被发起时,它将被一个或多个监听器接收并处理。所以,事件的发生可以和事件的处理相分离,从而降低耦合,这是一个分离接口和实现的极佳的例子。
让我们看看一个事件监听机制中的角色:
n 组件 ——v 发起 —— n 事件
n 监听器 ——v 接受and处理——n 事件
组件:是发起事件的具体类。监听器:是接收和处理事件的具体类。所以,事件的发生可以和事件的处理相分离。
对应到观察者模式中来:
观察者 < —— ——> 被具体监听器实现的那个类,这是一个接口。对应于 java.awt.event里面的全部接口
具体观察者 < —— ——> 具体监听器 XXXListener 。对应于 java.awt.event里面的部分类,因为还有一部分类是继承了抽象类
目标 < —— ——> 组件的父类,这是一个抽象类。对应于javax.swing里面的部分抽象类。
具体目标 < —— ——> 组件类。对应于所有组件类。
如何为一个组件注册监听器?
1 创建一个组件对象。
2 创建一个监听器类(建议这个类是一个匿名内部类,因为它含有其外部类对象的引用,这就为跨越类和子系统边界的调用提供了一种优雅的方式),唯一的要求是实现相应的监听器接口,然后实现里面的方法(也就是对事件处理逻辑)。最后创建本类对象便创建了一个具体的监听器。
3 用组件上的addXXXListener()方法给自己注册一个或几个(2)中创建的监听器对象。
一个组件可以注册多个不同类型的监听器。
联系事件监听机制,我们可以发现观察者模式的使用场合:
1.当一个抽象模型(事件监听模型)有两个方面(组件和监听器),其中一个方面依赖于另一方面。 将这二者封装在独立的对象中以使它们可以各自独立地改变和复用。
2.当对一个对象(组件对象)的改变需要同时改变其它对象(监听器对象),而不知道其它对象具体有几中、几个对象有待改变。
监听机制是这样的,swing的组件可以发起(触发)一个事件。这个事件被发起时,它将被一个或多个监听器接收并处理。所以,事件的发生可以和事件的处理相分离,从而降低耦合,这是一个分离接口和实现的极佳的例子。
让我们看看一个事件监听机制中的角色:
n 组件 ——v 发起 —— n 事件
n 监听器 ——v 接受and处理——n 事件
组件:是发起事件的具体类。监听器:是接收和处理事件的具体类。所以,事件的发生可以和事件的处理相分离。
对应到观察者模式中来:
观察者 < —— ——> 被具体监听器实现的那个类,这是一个接口。对应于 java.awt.event里面的全部接口
具体观察者 < —— ——> 具体监听器 XXXListener 。对应于 java.awt.event里面的部分类,因为还有一部分类是继承了抽象类
目标 < —— ——> 组件的父类,这是一个抽象类。对应于javax.swing里面的部分抽象类。
具体目标 < —— ——> 组件类。对应于所有组件类。
如何为一个组件注册监听器?
1 创建一个组件对象。
2 创建一个监听器类(建议这个类是一个匿名内部类,因为它含有其外部类对象的引用,这就为跨越类和子系统边界的调用提供了一种优雅的方式),唯一的要求是实现相应的监听器接口,然后实现里面的方法(也就是对事件处理逻辑)。最后创建本类对象便创建了一个具体的监听器。
3 用组件上的addXXXListener()方法给自己注册一个或几个(2)中创建的监听器对象。
一个组件可以注册多个不同类型的监听器。
联系事件监听机制,我们可以发现观察者模式的使用场合:
1.当一个抽象模型(事件监听模型)有两个方面(组件和监听器),其中一个方面依赖于另一方面。 将这二者封装在独立的对象中以使它们可以各自独立地改变和复用。
2.当对一个对象(组件对象)的改变需要同时改变其它对象(监听器对象),而不知道其它对象具体有几中、几个对象有待改变。
相关文章推荐
- java设计模式--事件监听器模式和观察者模式
- java设计模式--事件监听器模式和观察者模式
- 【设计模式】observer观察者模式:模拟java.awt.Button事件监听。
- 观察者模式与事件监听器模式--java设计模式扫盲
- java设计模式--事件监听器模式和观察者模式 .
- 详解java的事件监听机制和观察者设计模式
- java设计模式--事件监听器模式和观察者模式
- java设计模式--事件监听器模式和观察者模式
- java设计模式--事件监听器模式和观察者模式
- Java设计模式补充:回调模式、事件监听器模式、观察者模式(转)
- java事件监听机制(观察者设计模式的实际运用)
- 设计模式学习----观察者模式(事件监听实现)
- Java设计模式_观察者模式&事件处理机制
- 观察者模式与事件监听机制
- C#委托与事件之观察者Observer设计模式
- 由c#事件监听、回调函数引发观察者模式
- 设计模式--观察者(监听)设计模式
- 设计模式学习----观察者模式(事件监听实现)
- 设计模式学习----观察者模式(事件监听实现)
- 设计模式------观察者模式(ObserverPattern)和委托事件