2012-08-03 141 views
2

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

我坚持了三个竞争实现的想法,他们都不似乎不够好:

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

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

那么,有没有另一种解决方案,我省略了,我是否彻底重塑了车轮,还是这三个想法中最好的一个?

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

回答

3

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

是什么让你这么说?这听起来对我来说很糟糕。

DialogChoice对应于一个操作并有一个描述。你将它封装在一个独立存在并且可重用的对象中。

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

+0

+1。为什么人们认为混合动作和数据是“不OOP”总是让我感到惊讶。 – user949300 2012-08-03 16:26:10

1

列举了您的响应(枚举,甚至是具有常量的优秀旧Java Bean),并且如果可能的话,将您的业务逻辑设置为工厂模式。

+0

噢,我也没多想,但我可以有一个包含每一个可能的答案一个枚举每个对话框,然后选择适合每个对话框并在创建时添加它们的对话框。 – Timst 2012-08-03 15:54:09

0

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

+1

啊,我应该提到我正在使用不包含等效机制的JavaFX。 (正如我在我的主要帖子编辑精确,这是更多的一般设计问题,但无论如何感谢) – Timst 2012-08-03 15:38:04