当前位置:主页   - 电脑 - 程序设计 - JAVA
Java 理论与实践: 做个好的(事件)侦听器
来源:网络   作者:   更新时间:2012-06-12
收藏此页】    【字号    】    【打印】    【关闭

  观察者模式在 Swing 开发中很常见,在 GUI 应用程序以外的场景中,它对于消除组件的耦合性也非常有用。但是,仍然存在一些侦听器登记和调用方面的常见缺陷。在 Java 理论与实践 的这一期中,Java 专家 Brian Goetz 就如何做一个好的侦听器,以及如何对您的侦听器也友好,提供了一些感觉很好的建议。请在相应的 讨论论坛 上与作者和其他读者分享您对这篇文章的想法。(您也可以单击本文顶部或底部的 讨论 访问论坛。)

  Swing 框架以事件侦听器的形式广泛利用了观察者模式(也称为发布-订阅模式)。Swing 组件作为用户交互的目标,在用户与它们交互的时候触发事件;数据模型类在数据发生变化时触发事件。用这种方式使用观察者,可以让控制器与模型分离,让模型与视图分离,从而简化 GUI 应用程序的开发。

  “四人帮”的 设计模式 一书(参阅 参考资料)把观察者模式描述为:定义对象之间的“一对多”关系,这样一个对象改变状态时,所有它的依赖项都会被通知,并自动更新。观察者模式支持组件之间的松散耦合;组件可以保持它们的状态同步,却不需要直接知道彼此的标识或内部情况,从而促进了组件的重用。

  AWT 和 Swing 组件(例如 JButton 或 JTable)使用观察者模式消除了 GUI 事件生成与它们在指定应用程序中的语义之间的耦合。类似地,Swing 的模型类,例如 TableModel 和 TreeModel,也使用观察者消除数据模型表示 与视图生成之间的耦合,从而支持相同数据的多个独立的视图。Swing 定义了 Event 和 EventListener 对象层次结构;可以生成事件的组件,例如 JButton(可视组件) 或 TableModel(数据模型),提供了 addXxxListener() 和 removeXxxListener() 方法,用于侦听器的登记和取消登记。这些类负责决定什么时候它们需要触发事件,什么时候确实触发事件,以及什么时候调用所有登记的侦听器。

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明