2009-12-06 26 views
1

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

感谢,

阿里

回答

1

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

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

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

如果您尝试有一个监听器(通常是小应用程序或应用程序对象本身)作为侦听多个部件,然后你被撤消的基本调度这是中央的调用方法,并用手正在执行调度。这要求使用某种开关机制来区分您正在处理的事件的各个组件。该系统比你更容易做到这一点。随着程序的增长,这种开关结构既容易出错又难以维护。保留调度到系统。

来源:Patterns for Java Events

0

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

考虑到选择,我通常会尽量减少要编写的代码量,因为代码越少通常意味着错误发生的机会越少。