본문 바로가기

Language/Design Pattern

[Design Pattern: 구조] 6. Adapter

목적

  • 개별적으로 작동하는 특정한 CLASS를 공동의 Interface 규격에 맞추도록 하는 목적
  • 즉, 특정한 Interface 규격에 맞도록 중간 연결 클래스를 하나 더 만들어, 개별적인 CLASS의 수정없이 공동 Interface 규격에 맞춤


구현방식

  • Client에서 요구하는 규격을 맞추기 위해 객체를 변경함
  • 기능객체를 상속하고 Client의 요구규격에 맞는 Interface를 implements함
  • 쉽게 말해 독립적인 CLASS A가 있다. 근데 다른 클래스와의 인터페이스를 위해 INTERFACE B를 만들고, 이 규격에 맞추기 위해 extends A implements B를 한 class C를 만든다. 기능은 A의 기능을 상속해서 사용하고, 규격만 B로 다시 재정의 하는 것이다. Class C에서 다시 정의하는 로직따윈 없다.


예제

<Class Banana>
개별적으로 동작하는 banana 클래스가 있다. show()를 통해 화면에 출력하는 기능을 담당

 


<Interface Adapter>
공통의 Interface로써 print를 통해 화면에 출력하는 공통함수로 변경하고 싶다.

<Class AdapterBanana>
기능을 담당하는 Banana를 extends 하고, 공동 인터페이스인 Adapter를 implements를 한다.
그리고 print() 함수에서 단순히 banana의 show()를 수행

<사용>