Skip to main content

[Design Pattern] 구조 패턴 2. 어댑터 (Adapter)




어댑터 (Adapter) #

어댑터

  • 클래스의 인터페이스를 다른 인터페이스로 변환해서 호환시켜준다.
  • 특징
    • 오래된 코드나 서드파티 코드를 수정 없이 조정할 수 있다.
    • 하지만 지속적인 레거시 코드를 사용한다는 장기적인 문제가 있을 수 있다.



개념적인 예시 #

// 이 인터페이스의 GetRequest()를 호출해서 
public interface ITarget
{
    string GetRequest();
}

// 이 클래스를 사용하고 싶다면?
class Adaptee
{
    public string GetSpecificRequest()
    {
        return "Specific request.";
    }
}

// 어댑터를 만든다. 
class Adapter : ITarget
{
    private readonly Adaptee _adaptee;

    public Adapter(Adaptee adaptee)
    {
        this._adaptee = adaptee;
    }

    public string GetRequest()
    {
        return this._adaptee.GetSpecificRequest();
    }
}

class Program
{
    static void Main(string[] args)
    {
        Adaptee adaptee = new Adaptee();
        
        // 어댑터를 사용해서 어댑티를 ITarget 인터페이스로 호환시킨다.  
        ITarget target = new Adapter(adaptee);

        Console.WriteLine(target.GetRequest());
    }
}



References #