Contents
장점 서로 호환되지 않는 클래스들이 함께 작동 할 수 있도록
중간에 변환기 역할을 하는 어뎁터 클래스를 두어 연결하는 디자인 패턴
이질적인 데이터를 내 프로그램에 맞추어서 사용할 수 있게 만드는 작업
어댑터 = 가상 클래스
// 못건드리는 외부 라이브러리
public class OuterTiger {
private String fullname = "호랑이";
public String getFullname() {
return fullname;
}
}
---------------------------------------------------
public class TigerAdapter extends Animal{
//private Animal an;
private OuterTiger outerTiger;
public TigerAdapter(OuterTiger outerTiger) {
this.outerTiger = outerTiger;
}
public String getName() {
return outerTiger.getFullname();
}
}
----------------------------------------------
public class App {
public static void main(String[] args) {
Doorman doorman = new Doorman();
OuterTiger outerTiger = new OuterTiger();
TigerAdapter ta = new TigerAdapter(outerTiger);
Cat cat = new Cat();
Mouse mouse = new Mouse();
doorman.쫒아내(ta);
doorman.쫒아내(cat);
doorman.쫒아내(mouse);
}
}

기존의 Animal은 Cat과 Mouse는 서로 호환되는 클래스였고
OuterTiger를 추가로 doorman.쫒아내 메서드에 넣어 사용하고 싶었지만
호환되지 않는 클래스인 탓에
TigerAdapter 클래스를 거쳐서 사용이 가능하도록 만들 수 있었다.
장점
- 호환성 제공
- 유연한 설계
- 재사용성 증가
Share article