Java 在Actionlistener中使用EventObject.getSource

Java 在Actionlistener中使用EventObject.getSource,java,user-interface,refactoring,actionlistener,Java,User Interface,Refactoring,Actionlistener,我正在为分配重构一些代码-当前视图有很多按钮和菜单,还有一个动作监听器,它决定使用event.getSource()执行什么操作。从我所读到的内容来看,人们似乎认为每个GUI组件都有自己的操作侦听器更好,可能是通过某种工厂创建的。然而,除了稍微清理代码之外,这还有什么好处呢?这是否意味着堆上会有更多的对象,并且可能会影响性能 谢谢 这是一种权衡。源代码中有一堆if的代码被认为是丑陋的,而大量的侦听器可能会扰乱您的内存,并对性能产生负面影响 如果有选择的话,我通常会尽量减少必须编写的代码量,因为代

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

谢谢


这是一种权衡。源代码中有一堆if的代码被认为是丑陋的,而大量的侦听器可能会扰乱您的内存,并对性能产生负面影响


如果有选择的话,我通常会尽量减少必须编写的代码量,因为代码越少,出现bug的机会就越少。

这是一种折衷。源代码中有一堆if的代码被认为是丑陋的,而大量的侦听器可能会扰乱您的内存,并对性能产生负面影响


如果有选择的话,我通常会尽量减少必须编写的代码量,因为代码越少,出现错误的机会就越少。

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

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

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

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


来源:

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

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

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

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

资料来源: