设计选择:多选对话框?

时间:2012-08-03 15:29:02

标签: java design-patterns

我需要创建并显示多个多选对话框。这些是带有3个或更多按钮的对话框,例如“复制/移动/链接”或“替换/覆盖/忽略”等等。

我坚持使用三种相互竞争的实施方案,但这些方法似乎都不够好:

  • 为每个问题创建对话框,并将结果作为枚举返回,
  • 创建一个带有变量String的动态对话框,使用String作为标签将它们转换为按钮,并返回所选的String作为结果。
  • 创建一个对话框,其中包含DialogChoice,我将使用getText()方法为标签创建的接口,以及在选择DialogChoice时调用的act()方法。

第一个显然会产生冗余代码,但第二个代码的返回类型非常脏。第三个似乎是迄今为止最好的,但它看起来像某种伪装的功能代码,我不确定这是否是健康的OO做事方式。

那么,有没有我省略的另一种解决方案,我是完全重新发明轮子,还是这三个想法中最好的一个?

编辑:我正在使用JavaFx,因此没有可以重用的内置机制,但它更多的是一个可以适应多个框架甚至多种语言的一般性问题。我只包含了Java标记,以免混淆“enum”和“interface”关键字。

3 个答案:

答案 0 :(得分:3)

  

“到目前为止,第三个似乎是最好的,但它看起来像某种伪装的功能代码”

是什么让你这么说的?这对我来说听起来很不错。

DialogChoice对应于某个操作并具有说明。您将其封装在一个独立存在且可重用的对象中。

唯一的“问题”是它可能使用匿名类和/或Runnables来增加冗长...

答案 1 :(得分:1)

枚举您的响应(Enum,甚至包含常量的旧Java Bean),如果可能,请将您的业务逻辑设置为工厂模式。

答案 2 :(得分:0)

Standard Swing JOptionPane做你想做的事;可能最好用它而不是重新发明轮子。