2012-02-23 4 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

하나는 (그 문제에 대한 또는 분리) 지방으로 :( – jgauffin

+0

그래서 나는 또한 IAmFat를 구현하는 클래스를 필요, 그리고 어떤 인스턴스는 FatAdapter 생성자에 주입 될 것인가? –

+0

아니, 경우 지방 클래스에는 인터페이스가 없으므로 클래스를 삽입하면됩니다. 클래스에 정적 메서드가 있으면 전혀 삽입 할 필요가 없으며 간단히 'FatAdapter'에서 직접 호출 할 수 있습니다. – Steven

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(); 
    } 
}