-
[Spring/디자인패턴] 어댑터 패턴Framework/Spring 2021. 7. 18. 22:07
어댑터 패턴
- 어댑터는 실생활에서 100v를 220v로 변경해주거나, 그 반대로 해주는 흔히 돼지코라고 불리는 변환기를 예로 들 수 있다.
- 호환성이 없는 기존 클래스의 인터페이스를 변환하여 재사용할 수 있도록 한다.
어댑터 패턴 예시
<Electronic110V>
public interface Electronic110V { void powerOn(); }
<Electronic220V>
public interface Electronic220V { void connect(); }
<HairDryer>
public class HairDryer implements Electronic110V{ @Override public void powerOn() { System.out.println("헤어드라이기 110v on"); } }
- 헤어드라이어는 110v를 기반으로 동작한다.
<Cleaner>
public class Cleaner implements Electronic220V{ @Override public void connect() { System.out.println("청소기 220v on"); } }
- 청소기는 220v를 기반으로 동작한다.
<SocketAdapter>
public class SocketAdapter implements Electronic110V{ private Electronic220V electronic220V; public SocketAdapter(Electronic220V electronic220V){ this.electronic220V = electronic220V; } @Override public void powerOn() { electronic220V.connect(); } }
- 220v의 전자제품을 110v에 사용하기 위해 어댑터 패턴을 이용하여 구현한다. 해당 클래스는 220v -> 110v이기 때문에 Electronic110V를 implements받는다.
- 생성자에서 매개변수로 들어온 electronic220v를 해당 객체로 대입한다.
<Main>
public class Main { public static void main(String[] args) { HairDryer hairDryer = new HairDryer(); connect(hairDryer); Cleaner cleaner = new Cleaner(); Electronic110V adapter = new SocketAdapter(cleaner); connect(adapter); } //콘센트 public static void connect(Electronic110V electronic110V){ electronic110V.powerOn(); } }
- 클리너는 220v제품이라 사용할 수 없지만 어댑터를 사용함으로써 동일하게 연결할 수 있게 되었다.
'Framework > Spring' 카테고리의 다른 글
[Spring] Spring Boot (0) 2021.07.24 [Spring/디자인패턴] 프록시 패턴 (0) 2021.07.18 [Spring/디자인패턴] 싱글톤 패턴 (0) 2021.07.18 [Spring/디자인패턴] 디자인패턴 (0) 2021.07.17 [Spring] 객체지향 설계 5원칙 SOLID (0) 2021.07.17