실제 우리 일상생활에서 쓰이는 어댑터와 유사하다. ex) 100v -> 220v
호환성이 없는 기존 클래스의 인터페이스를 변환하여 재사용함
SOLID중에서 개방패쇄 원칙을 따른다.

package com.company.gof.adapter;
public interface Electronic110V {
public void powerON();
}
package com.company.gof.adapter;
public interface Electronic220V {
public void connect();
}
package com.company.gof.adapter;
public class Hairdryer implements Electronic110V{
@Override
public void powerON() {
System.out.println("Hair Dryer Power On By 110V");
}
}
package com.company.gof.adapter;
public class Cleaner implements Electronic220V{
@Override
public void connect() {
System.out.println("Cleaner On by 220V");
}
}
package com.company.gof.adapter;
public class AirConditioner implements Electronic220V {
@Override
public void connect() {
System.out.println("AirConditioner ON by 220V");
}
}
package com.company.gof.adapter;
public class SocketAdapter implements Electronic110V{
// 변환 대상
private Electronic220V electronic220V;
public SocketAdapter(Electronic220V electronic220V){
this.electronic220V = electronic220V;
}
@Override
public void powerON() {
electronic220V.connect();
}
}
package com.company.gof;
import com.company.gof.adapter.*;
public class Main {
public static void main(String[] args) {
Hairdryer hairdryer = new Hairdryer();
connect(hairdryer);
Cleaner cleaner = new Cleaner();
// 사용불가 콘센트가 맞지 않아서
// connect(cleaner);
Electronic110V adapter = new SocketAdapter(cleaner);
connect(adapter);
AirConditioner airConditioner = new AirConditioner();
Electronic110V airAdapter = new SocketAdapter(airConditioner);
connect(airAdapter);
}
// 콘센트
public static void connect(Electronic110V electronic110V){
electronic110V.powerON();
}
}
-결과 화면

'Spring' 카테고리의 다른 글
| Decorator pattern(데코레이터 패턴) (0) | 2021.04.18 |
|---|---|
| Proxy pattern(프록시 패턴) (0) | 2021.04.16 |
| Singleton pattern(싱글톤 패턴) (0) | 2021.04.15 |
| 디자인 패턴 (0) | 2021.04.15 |
| POJO 클래스 (0) | 2021.04.15 |