어뎁터는 서로 다른 두 인터페이스 사이에 통신이 가능하게 하는 것
Adapter Pattern 은 OCP ( Open Closed Principle ) 를 활용한 설계 패턴
Ex )
Adapter 를 적용하지 않은 상태
public class ServiceA {
void runServiceA() {
System.out.println("serviceA");
}
}
public class ServiceB {
void runServiceB() {
System.out.println("serviceB");
}
}
public class ClientWithNoAdapter {
public static void main(String[] args) {
ServiceA sa = new ServiceA();
ServiceB sa = new ServiceB();
sa.runServiceA();
sa.runServiceB();
}
}
Adapter 를 적용한 상태
public class AdapterServiceA {
ServiceA sa = new ServiceA();
void runService() {
sa.runServiceA();
}
}
public class AdapterServiceB {
ServiceB sb = new ServiceB();
void runService() {
sb.runServiceB();
}
}
public class ClientWithAdapter {
public static void main(String [] args) {
AdapterServiceA asa = new AdapterServiceA();
AdapterServiceB asb = new AdapterServiceB();
asa.runService();
asb.runService();
}
}
Adapter Pattern 은 합성 , 즉 객체를 속성으로 만들어서 참조하는 디자인 패턴
호출당하는 쪽의 메서드를 호출하는 쪽의 코드에 대응하도록 중간에 변환기를 통해 호출하는 패턴