본문 바로가기
이론/디자인패턴

[디자인패턴] 어뎁터 패턴 Adapter Pattern

by 6161990 2021. 6. 4.

📌 어뎁터 패턴 Adapter Pattern

Adapter Pattern 에서는 실생활에서 많이 쓰이는 어뎁터를 떠올리면 된다.

흔히 돼지코라고 불리는데 100v를 200v로 변경해주거나, 그 반대로 해주는 변환기를 뜻한다.


📍 어뎁터 패턴의 원칙호환성이 없는 기존 클래스의 인터페이스를 변환하여 재사용 할 수 있도록 한다.

SOLID 중에서 개방 폐쇄 원칙OCP를 따른다.


 

Electronic110v 인터페이스

 

 

  Electronic220v 인터페이스

 

Electronic110v 인터페이스를 구현한 HairDryer 클래스

 

Electronic220v 인터페이스를 구현한 Cleaner 클래스

 

Electronic220v 인터페이스를 구현한 AirConditioner 클래스

 

 

220v를 110v로 바꿔주는 어뎁터 클래스

 

  Main 클래스

 Main 클래스

12 HairDryer hairDryer = new HairDryer(); // 110v 구현 클래스 생성

connect(hairDryer);

 

15 Cleaner cleaner = new Cleaner();

16 connect(cleaner);

오류가 뜬다.

connect()은 매개변수로 Electronic110v만 받을 수 있는데

Cleaner 객체는 Electronic220v를 상속받았기 때문이다.

 

220v를 110v로 바꿔주는 돼지코가 필요한 상황이다.

 

SocketAdepter 클래스를 이용한다.

21 Electronic110v adapter =newSocketAdepter(cleaner);

22 connect(adapter);

 

 => 자기 자신(Cleaner) 은 변하지 않고 중간에 인터페이스(어뎁터)로 맞추는 형식 =  adepter pattern

 

Electronic220v를 상속받은 AirConditioner 또한 어뎁터로 맞춘다.

25 AirConditioner airConditioner = new AirConditioner();

26 Electronic110v airAdepter = new SocketAdepter(airConditioner);

27 connect(airAdepter); 

 

 

** Electronic110v만 받을 수 있는 connect() **

30 public static void connect(Electronic110v electronic110v){

31 electronic110v.powerOn(); 

 


 

Adepter pattern ?

=> 자기 자신(220v의 Cleaner, AirConditioner 클래스) 은

변하지 않고 중간에 인터페이스(SocketAdepter)로 맞추는 형식