【问题标题】:Design choice: multiple choices dialog?设计选择:多选对话框?
【发布时间】:2012-08-03 15:29:01
【问题描述】:

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

我被三个相互竞争的实现想法所困扰,但似乎都不够好:

  • 为每个问题创建对话框,并将结果作为枚举返回,
  • 创建一个动态对话框,该对话框采用 String 的 vararg,使用 String 作为标签将它们转换为按钮,并返回选定的 String 作为结果。
  • 创建一个接受 DialogChoice 可变参数的对话框,我将使用 getText() 方法为标签创建一个界面,并在选择 DialogChoice 时调用一个 act() 方法。

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

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

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

【问题讨论】:

    标签: java design-patterns


    【解决方案1】:

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

    是什么让你这么说?听起来不错。

    一个 DialogChoice 对应一个动作并且有一个描述。您将其封装在一个独立存在且可重用的对象中。

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

    【讨论】:

    • +1。为什么人们认为混合操作和数据是“非 OOP”总是让我感到惊讶。
    【解决方案2】:

    枚举您的响应(枚举,甚至是带有常量的老式 Java Bean),如果可能,让您的业务逻辑采用工厂模式。

    【讨论】:

    • 哦,是的,我没有考虑过,但我可以有一个包含每个对话框所有可能答案的枚举,然后选择适合每个对话框的那个,并在创建时添加它们。跨度>
    【解决方案3】:

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

    【讨论】:

    • 啊,我应该提到我正在使用不包含等效机制的 JavaFX。 (正如我在我的主要帖子编辑中所说的那样,这更像是一个一般的设计问题,但无论如何谢谢)
    猜你喜欢
    • 1970-01-01
    • 2014-04-01
    • 1970-01-01
    • 2012-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    相关资源
    最近更新 更多