디자인패턴

Design Pattern Digest - 7. Adapter

그레이트쪼 2016. 9. 3. 23:23


  • Wrapper 패턴이라고도 한다. 
  • 이미 제공되고 있는 기능을 필요한 쪽이 쓸 수 있도록 해주는 것이 목적이다. 
  • 상속을 이용할 수도 있고 위임(delegation)을 이용할 수도 있다. 
  • 필요한 메소드를 정의한 Adapter interface가 있다. 실제 기능은 Adaptee라는 클래스가 대충 제공한다. 그러면 Adapter interface를 implements하는 ConcreteAdapter는 구현하는데 Adaptee 클래스를 extends해서 만들어도 되고 Adaptee는 위임으로 갖고 있어도 된다. (Adaptee instance에 대한 레퍼런스를 가지고 있으면서 활용하는 방식)
  • 되도록이면 위임 방법을 사용하는 것이 좀 더 바람직하다. (유연하다)
  • Proxy 패턴과 매우 유사한데, 차이점이 있다면 Proxy 패턴에서 위임 관계인 Proxy와 RealSubject간의 interface가 같은 반면 여기서 ConcreteAdapter와 Adaptee는 아무 관계가 없다. 그야말로 느슨하다.
  • 소스가 있든 native library형태로만 제공되든 그걸 감싸는 wrapper class들은 대부분 Adapter 패턴이라고 보면 된다. 


출처