2012-02-23 90 views

回答

9

這很簡單。你需要這樣的東西:

interface IAmFat 
{ 
    void Method1(); 
    void Method2(); 
    ... 
    void MethodN(); 
} 

interface IAmSegregated 
{ 
    void Method1(); 
} 

class FatAdapter : IAmSegregated 
{ 
    private readonly IAmFat fat; 

    public FatAdapter(IAmFat fat) 
    { 
     this.fat = fat; 
    } 

    void IAmSegregated.Method1() 
    { 
     this.fat.Method1(); 
    } 
} 
+2

+1沒人想的是脂肪(或分離爲此事):( – jgauffin 2012-02-23 13:26:52

+0

所以我還需要它實現了IAmFat一類,和實例將被注入到FatAdapter構造? – 2012-02-23 13:57:55

+0

不,如果你的脂肪類沒有接口,只需要注入該類;如果類有靜態方法,則根本不需要注入它,你可以直接在'FatAdapter'中調用其中的一個。 – Steven 2012-02-23 14:06:46

0

適配器是不是真的在這裏正確的工具。其設計使兩個不兼容的接口能夠通過相互適應進行交談。在這種情況下,您希望基於最終用戶公開某些功能子集。在這種情況下,您想使用facade

class Fat{ 
    public string A(); 
    public int B(); 
    . 
    public void EatMeat() 
    . 
    public void Z(); 
} 
class JennyCraig{ 
    private Fat f = Fat(); 
    public string A(){ 
    return f.A(); 
    } 
    public void Z(){ 
    return f.Z(); 
    } 
class Atkins{ 
    public Fat f = Fat(); 

    public void EatMeat(){ 
     return f.EatMeat(); 
    } 
}