java - 设计选择: multiple choices dialog?

标签 java design-patterns

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

我陷入了三种相互竞争的实现想法中,但没有一个看起来足够好:

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

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

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

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

最佳答案

"The third seems the best so far, but it looks like some kind of disguised functional code"

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

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

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

关于java - 设计选择: multiple choices dialog?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11798741/

相关文章:

java - 在单元测试中使用应用程序类作为实用程序

android - 管理大文件(代码行)

java - 为什么使用 j_username 和 SPRING_SECURITY_LAST_USERNAME 变量?

c# - 这个图案的名字? (回答 : lazy initialization with double-checked locking)

Netbeans 6.1 中的 Java bean 事件

java - 有没有办法在 Spring Boot 微服务中完成异步进程响应时处理它们?

php - 使用 Laravel 实现存储库模式

c# - 扩展访问者/桥梁模式的两侧

java - 第二次运行应用程序时错误膨胀类 <unknown>

java - 使用 hibernate 通过多个线程保存多个实体