본문 바로가기
공부(~2016)/디자인패턴

Adapter 패턴 (Wrapper 패턴)

by soy; 2014. 7. 7.

Adapter 패턴 (=Wrapper 패턴)

이미 제공되어 있는 것을 그대로 사용할 수 없을 때, '제공되어 있는 것'과 '필요한 것' 사이의 '차이'를 없애주는 디자인패턴.

기존에 있는 클래스(Adaptee)를 이용하여, 필요한 기능을 제공해주는 Adaptor 클래스를 만든다.

 

구현 예시

1. 클래스에 의한 Adapter 패턴 - class Adapter extends Adaptee implements Target

  1) 새롭게 필요한 기능을 정의한 interface Target 을 만든다.

  2) Target 인터페이스를 implements한 Adaptor 클래스를 만든다.

  3) Adaptor 클래스는 기존에 제공되어 있는 Adaptee 클래스를 extends 한다.

  4) Adaptor 클래스에 Target 인터페이스에 정의된 메소드들을 오버라이드한다. 이 때, 상위클래스인 Adaptee 의 메소드를 이용한다.

 

2. 인스턴스에 의한 Adapter 패턴 - class Adapter extends Target

  1) 새롭게 필요한 기능을 정의한 추상클래스 Target 을 정의한다.

  2) Target 추상클래스를 extends한 Adaptor 클래스를 만든다.

  3) Adaptor 클래스는 Adaptee 클래스를 인스턴스변수로 갖는다.

  4) Adaptor 클래스에 Target 추상클래스에 정의된 메소드들을 오버라이드한다. 이 때, 인스턴스변수인 Adaptee 의 메소드를 이용한다.


특징/장점

 - 기존의 클래스는 전혀 수정하지 않으므로, 오류가 났을 때 새롭게 만든 클래스만 확인하면 됨.

- 기존 클래스의 구체적인 구현 방법을 모르더라도, API(인터페이스)만 알면 됨.

댓글