Adapter 패턴
노트북에 사용하는 어댑터처럼 이미 제공된것(ac220볼트) 과 필요한것 (dc 19v)의 차이를 없애주는 패턴방법
1. 클래스에 의한 Adapter 패턴(상속을 사용한 것)
2. 인스턴스에 의한 Adapter패턴(위임을 사용한 것)
첫번째 방법을 사용해 봅시다.
나오는 클래스를 설명하면
제공되고있는 것(ac220) Banner클래스(showWithParen, showWithAster)
어댑터 PrintBanner 클래스
필요한것(dc 19v) Print인터페이스(printWeak, printStrong)
public class Banner {
private String string;
Banner(String string){
this.string = string;
}
public void showWithParen(){
System.out.println("(" + string + ")");
}
public void showWithAster(){
System.out.println("*" + string + "*");
}
}
public interface Print {
public abstract void printWeak();
public abstract void printStrong();
}
public class PrintBanner extends Banner implements Print
{
PrintBanner(String string) {
super(string);
// TODO Auto-generated constructor stub
}
@Override
public void printStrong() {//인터페이스는 Print 즉 필요한것을 구현햇는데
// TODO Auto-generated method stub
showWithParen();//실제 내용을 보니 주어진것인 Banner를 썼음
//결국 PrintBanner는 어댑터의 역할만 했음
}
@Override
public void printWeak() {
// TODO Auto-generated method stub
showWithAster();
}
}
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Print p = new PrintBanner("Hello");
p.printWeak();
p.printStrong();
}
}
결과
결론적으로 main클래스는 Banner클래스의 존재유무를 모릅니다. 즉 노트북에 디시전류만 공급되면 잘 동작하지 ac220가 어댑터에 의해서 변해진 사실은 모릅니다
main클래스를 전혀 변경하지않고 어댑터인 PrintBanner클래스의 구현을 바꿀 수 있다는 것이 장점입니다.
'프로그래밍 > 자바 디자인패턴' 카테고리의 다른 글
디자인 패턴 singleton 패턴 (0) | 2012.08.03 |
---|---|
디자인 패턴 Factory Method 패턴 (0) | 2012.08.03 |
디자인 패턴 Template Method 패턴 (0) | 2012.08.03 |
디자인 패턴 위임에 의한 Adapter 패턴(인스턴스를 이용한) (0) | 2012.08.03 |
디자인패턴 Chain of Responsibility 패턴 (0) | 2012.08.02 |
디자인 패턴 Visitor 패턴 (0) | 2012.08.01 |
디자인 패턴 Decorator 패턴 (0) | 2012.08.01 |
디자인 패턴 Composite 패턴 (0) | 2012.08.01 |