[디자인패턴] 어댑터 패턴 (Adapter Pattern)
18 Oct 2021 -
Less than 1 minute read
-
서로 다른 인터페이스를 가진 두 클래스를 어댑터 클래스로 인터페이스를 통일 시켜 사용하는 방법 (호환성이 없는 인터페이스 때문에 함께 동작할 수 없는 클래스들이 함께 작동하도록 해줌)
-
ex)
-
(interface) Electronic110V.java
public interface Electronic110V { void powerOn(); }
-
(interface) Electronic220V.java
public interface Electronic220V { void connect(); }
-
(implements Electronic110V) HairDryer.java
public class HairDryer implements Electronic110V{ @Override public void powerOn() { System.out.println("110v 헤어 드라이기 ON"); } }
-
(implements Electronic220V) AirConditioner.java
public class AirConditioner implements Electronic220V{ @Override public void connect() { System.out.println("220v 에어컨 ON"); } }
-
(adapter class) SocketAdapter.java
public class SocketAdapter implements Electronic110V{ private Electronic220V electronic220V; public SocketAdapter(Electronic220V electronic220V){ this.electronic220V = electronic220V; } @Override public void powerOn() { electronic220V.connect(); } }
-
(main class) Main.java
public class Main { public static void connect(Electronic110V electronic110V){ electronic110V.powerOn(); } public static void main(String[] args){ HairDryer hairDryer = new HairDryer(); connect(hairDryer); AirConditioner airConditioner = new AirConditioner(); Electronic110V adapter = new SocketAdapter(airConditioner); connect(adapter); } }
-
출력결과
110v 헤어 드라이기 ON 220v 에어컨 ON
-