반응형
어뎁터 패턴은 실생활에서는 110v를 220v로 변경해주거나, 그 반대로 해주는 흔히 돼지코 라고 불리는 변환기를 예로 들 수 있다.
호환성이 없는 기존 클래스의 인터페이스를 변환하여 재사용 할 수 있도록 한다.
SOLID중에서 개방폐쇄 원칙 (OCP)를 따른다.
package com.company.design.adapter;
public interface Electronic110v {
void powerOn();
}
package com.company.design.adapter;
public interface Electronic220v {
void connect();
}
package com.company.design.adapter;
public class SocketAdapter implements Electronic110v{
private Electronic220v electronic220v;
// 110V를 220V로 변환
public SocketAdapter(Electronic220v electronic220v){
this.electronic220v = electronic220v;
}
@Override
public void powerOn() {
electronic220v.connect();
}
}
package com.company.design.adapter;
public class AirConditioner implements Electronic220v{
@Override
public void connect() {
System.out.println("에어컨 220V on");
}
}
package com.company.design.adapter;
public class Cleaner implements Electronic220v{
@Override
public void connect() {
System.out.println("청소기 220V on");
}
}
package com.company.design.adapter;
public class HairDryer implements Electronic110v{
@Override
public void powerOn() {
System.out.println("헤어 드라이기 110v on");
}
}
package com.company.design;
import com.company.design.adapter.*;
import com.company.design.singleton.Aclazz;
import com.company.design.singleton.Bclazz;
import com.company.design.singleton.SocketClient;
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);
AirConditioner airConditioner = new AirConditioner();
Electronic110v airAdapter = new SocketAdapter(airConditioner);
connect(airAdapter);
}
// 콘센트
public static void connect(Electronic110v electronic110v) {
electronic110v.powerOn();
}
}
반응형
'언어 > JAVA' 카테고리의 다른 글
데코레이터 패턴 (0) | 2021.06.06 |
---|---|
Proxy pattern (0) | 2021.06.06 |
POJO JAVA (0) | 2021.06.06 |
객체지향 설계 5원칙 SOLID (0) | 2021.06.06 |
알고리즘 7 (0) | 2021.05.30 |