-
디자인 패턴 - 어댑터 패턴(Adpater Pattern)Java 2022. 3. 16. 15:16
ODBC/JDBC 같은 공통 인터페이스에 적용되어 있는 패턴
다양한 데이터베이스 시스템을 단일한 인터페이스로 조작할 수 있게 해줌.
어댑터 패턴을 사용하지 않을 때
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 sa1 = new ServiceA(); ServiceB sa2 = new ServiceB(); sa1.runServiceA(); sa2.runServiceB(); } }어댑터 패턴 적용
public interface Electronic110V { public void powerOn(); }public interface Electronic220V { public void connect(); }public class Cleaner implements Electronic220V{ @Override public void connect() { System.out.println("220v 청소기 ON"); } }청소기는 220V이다.
따라서 220V -> 110V로 변환하는 어댑터가 필요하다.
public class SocketAdapter implements Electronic110V { private Electronic220V electronic220V; public SocketAdapter(Electronic220V electronic220V){ this.electronic220V = electronic220V; } @Override public void powerOn() { electronic220V.connect(); } }메인 함수
public class Main { public static void main(String[] args) throws InterruptedException { Cleaner cleaner = new Cleaner(); // connect(cleaner); 청소기는 220V라서 안됨. Electronic110V adapter = new SocketAdapter(cleaner); connect(adapter); // 어댑터를 연결하여 동작 } public static void connect(Electronic110V electronic110V){ electronic110V.powerOn(); } }: 자기 자신을 변환시키지 않고 인터페이스 형태를 맞춰주는 패턴
: 호출당하는 쪽의 메서드를 호출하는 쪽의 코드에 대응하도록 중간에 변환기를 통해 호출하는 패턴
'Java' 카테고리의 다른 글
디자인 패턴 - 팩터리 메서드 패턴(Factory Method Pattern) (0) 2022.03.18 디자인 패턴 - 템플릿 메서드 패턴(Template Method Pattern) (0) 2022.03.18 디자인 패턴 - 싱글턴 패턴(Singleton Pattern) (0) 2022.03.17 디자인 패턴 - 데코레이터 패턴(Decorator Pattern) (0) 2022.03.17 디자인 패턴 - 프록시 패턴(Proxy Pattern) (0) 2022.03.16