2012-08-03 139 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