- Adapter 패턴 : 상속을 사용한 패턴, 위임을 사용한 패턴
- 전원의 비유와 예제 코드의 대응 관계
전원의 비유 | 예제 코드 | |
제공된 것 | 교류 100볼트 | Banner 클래스(showWithParen, showWithAster) |
변환 장치 | 어댑터 | PrintBanner 클래스 |
필요한 것 | 직류 12볼트 | Print 인터페이스(printWeak, printStrong) |
- Banner 클래스
public class Banner {
private String string;
public Banner(String string) {
super();
this.string = string;
}
public void showWithParen() {
System.out.println("(" + string + ")");
}
public void showWithAster() {
System.out.println("*" + string + "*");
}
}
- Main 클래스
public class Main {
public static void main(String[] args) {
Print p = new PrintBanner("Hello");
p.printWeak();
p.printStrong();
}
}
1. 상속을 사용한 패턴
- Print 인터페이스
public interface Print {
public abstract void printWeak();
public abstract void printStrong();
}
- PrintBanner 클래스
public class PrintBanner extends Banner implements Print {
public PrintBanner(String string) {
super(string);
}
@Override
public void printWeak() {
showWithParen();
}
@Override
public void printStrong() {
showWithAster();
}
}
2. 위임을 사용한 패턴
- Print 클래스
public abstract class Print {
public abstract void printWeak();
public abstract void printStrong();
}
- PrintBanner 클래스
public class PrintBanner extends Print {
private Banner banner;
public PrintBanner(String string) {
this.banner = new Banner(string);
}
@Override
public void printWeak() {
banner.showWithParen();
}
@Override
public void printStrong() {
banner.showWithAster();
}
}
참고문헌 : 유키 히로시 저/김성훈 역(2022), JAVA 언어로 배우는 디자인 패턴 입문, 영진닷컴