2010-08-04 28 views
2

我偶然發現了這個類,並想知道XYZAdapter是否是正確的名字。我知道適配器模式是如何工作的,但是這個解決方案有些不同:不是實現DataTable接口並映射適當的方法調用,而是通過複製值並公開這個對象來創建一個新的DataTable對象。它那的樣子:這仍然是一個適配器模式?

class Adapter 
{ 
    private NodeList list; 
    DataTable table { get { return CreateTable(); } } 

    Adapter(NodeList nl) 
    { 
     list = nl; 
    } 

    private DataTable CreateTable() 
    { 
     // Fetch Data in NodeList, create a Table and return it 
     // needs to be splitted in smaller methods ;D 
    } 
} 

通常即時做這種方式,但數據表界面enormus:

class Adapter : DataTable 
{ 
    private NodeList list; 
    DataTable table { get { return CreateTable(); } } 

    Adapter(NodeList nl) 
    { 
     list = nl; 
    } 
    // Here are all the DataTable methods mapped to NodeList 
} 

提前感謝!

+2

代碼是否解決了您正在嘗試解決的問題?它是無bug且可維護的嗎?如果是這樣,爲什麼你在乎它是否使用了特定的設計模式? – 2010-08-04 11:40:53

+0

問題是什麼?你在做什麼可以用某個名字來稱呼? – chryss 2010-08-04 11:44:43

+1

@Ben因爲我想知道和學習。我不會改變任何實現,只要它不是已知的模式。但爲了可讀性的原因,我可能會將類的名稱從XYZAdapter更改爲XYZConverter/Translator。 @chris yep那至少是我的問題的一部分。我偶然發現這個班,並想知道XYZAdapter是否是正確的名字。 – atamanroman 2010-08-04 11:45:57

回答

4

適配器將不符合標準的接口調整爲符合標準的接口。例如它會轉換/包裹一個圓形掛釘以形成一個方形掛釘,以便它適合一個方形槽。

您的解決方案在技術上不是適配器模式 - 它更多是一個翻譯器或轉換器。關鍵的區別在於您的適配器不能在預期DataTable實例的方法中被替換。