2011-08-16 130 views
0

我想知道,在以下場景中最好使用哪種模式。請建議設計模式

我有不同類型的數據表示爲用戶。用戶可以選擇,數據如何在屏幕上呈現。

  1. 列表項
  2. 下拉列表
  3. 單選按鈕列表
  4. 複選框等。

我知道,抽象工廠,或工廠方法將在這裏套件。但有什麼辦法擺脫以下內容:

If (SomeType == SomeTypes.DropDown) 
{ 
    return new DropDownClass(); 
} 

有什麼辦法可以做到更抽象嗎?

+1

說明,即使在工廠這一切是很容易的,你必須確定哪些返回... –

回答

0

您可以爲SimpleFactories創建一個List,並依次詢問它是否可以處理Type以及是否讓它創建組件。

它應該是這樣的:

interface SimpleFactory{ 
    boolean canHandle(SomeType type); 
    Component create() 
} 

class Factory{ 
    List<SimpleFactory) factories = .... 

Component create(SomeType type){ 
    for(f : factories) 
     if (f.canHandle(type) return f.create() 
    return null; 
} 
+0

哦,謝謝。我需要閱讀.NET中的泛型。 – user896048

0

在.net中我經常使用的仿製藥,繼承和多態相結合,以確定在運行時一個特定的請求處理程序。

當你使用像在某個時刻在this