- '이미 제공되어 있는 것'과 '필요한 것' 사이의 '차이'를 없애주는 디잔인 패턴 이 Adapter 패턴 (일명 : Wrapper 패턴)
- Adapter 패턴의 종류
* 클래스에 의한 Adapter 패턴 (상속을 사용한 Adapter 패턴)
- 단점 : 상속 을 활용하기 때문에 유연하지 못하다.
- 장점 : 어댑터를 전체를 다시 구현할 필요가 없다.(빠르다는 얘기)
- 주의 : 자바는 다중상속을 지원하지 않는다. (Ex - public class Adapter extends Target, Adaptee{} )
EX)
public class Adaptee {
public void specificRequest() {
System.out.println("Adaptee.speificRequest()" );
}
}
public interface Target{
public void request():
}
public class Adapter extends Adaptee implements Target {
public void request() {
this.specificRequest(); // 다중상속
}
}
public class Clinet {
public static void main(String args[] ) {
Target target = new Adapter();
target.request();
}
}
결과 : Adaptee.speificRequest(); 출력 된다.
대충 소스를 보면 이해는 되겟는데... 설명하라면 못하겠다 -0-
* 인스턴스에 의한 Adapter 패턴 (위임을 사용한 Adapter 패턴)
- 단점 : Adapter 클래스의 대부분의 코드를 구현해야 하기 떄문에 효율적이지 못하다.
- 장점 : 구성(Composition) 를 사용하기 때문에 더 뛰어나다(유연하다)
EX)
public class Adaptee {
public void specificRequest() {
System.out.println("Adaptee.speificRequest()" );
}
}
public interface Target {
public void request();
}
public class Adapter implements Target {
Adaptee adaptee = new Adaptee(); // 객채 생성
public void request() {
adaptee.specificRequest(): // 객체 연결
}
}
public class Clinet {
public static void main(String args[] ) {
Target target = new Adapter();
target.request();
}
}
결과 : Adaptee.speificRequest(); 출력 된다.
'공부 > JAVA' 카테고리의 다른 글
JAVA_[Thread] (0) | 2012.06.23 |
---|---|
JAVA_[객체_직렬화] (0) | 2012.06.23 |
JAVA_[Eclipse_SerialVersionUID] (0) | 2012.06.23 |
JAVA_[코딩_지침] (0) | 2012.06.21 |
JAVA_[StringTokenizer 과 Split 의 차이] (0) | 2012.06.21 |