1

我正在为分配重构一些代码——当前视图有很多按钮和菜单以及一个动作监听器,它通过使用 event.getSource() 来决定做什么。从我读过的内容来看,人们似乎认为每个 GUI 组件都有自己的动作监听器会更好,也许是通过某种工厂创建的。但是,除了稍微清理代码之外,这还有什么其他好处——这是否意味着更多的对象将在堆上并可能影响性能?

谢谢,

阿里

4

2 回答 2

1

使用单独的侦听器意味着您不需要执行布尔测试来确定您的侦听器应该做什么。这有两个好处

  • 首先,它使代码运行得更快一些。

  • 其次,它增强了代码的可维护性和可扩展性。如果您需要添加新组件,则无需修改现有方法。

如果您尝试让一个侦听器(通常是小程序或应用程序对象本身)充当多个组件的侦听器,那么您正在撤消对调用方法至关重要的基本调度,并且正在手动实现调度。这需要使用某种开关机制来区分您正在处理其事件的各种组件。系统比你更有能力做到这一点。随着程序的增长,这种开关结构既容易出错又难以维护。将调度留给系统。

资料来源:Java 事件模式

于 2009-12-06T15:39:19.343 回答
0

这是一个权衡。源代码中有一堆if代码被认为是丑陋的,而大量的听众可能会混淆你的记忆并对性能产生负面影响。

如果可以选择,我通常会尽量减少我必须编写的代码量,因为更少的代码通常意味着更少的错误机会。

于 2009-12-06T15:34:58.993 回答