我有一个看起来有些基本的设计问题,但我正在努力寻找合适的解决方案,因为我在 OO 设计方面没有太多经验。
我有一个系统,它有很多框架,用户需要在其中识别企业/公司。这样做的一种方法是单击一个按钮,该按钮将打开第二个框架,使用户能够选择公司。选择完成后,公司的代码和名称应在原始框架的文本字段中初始化。
我认为在需要公司标识的每一帧中复制操作代码并不是一个好的设计选择。不过,我不知道如何在不引用触发动作的框架的情况下创建单个ActionListener
(或javax.swing.Action
),因为我无法初始化文本字段(或者我会?)。
我的第一个想法是为所有需要使用单一方法(如setCorporation(Corporation corporation)
. 这样,当我创建一个 时ActionListener
,我会传递一个实现接口的框架实例的引用。
问题是这个解决方案会创建双重引用(addActionListener(new SearchAction(this))
),我必须为每个类似的问题(比如搜索客户端)实现一个接口。
解决此类问题的最佳方法是什么?