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