JAVA

[Java] Adapter Pattern

lakelight 2022. 7. 31. 18:06
728x90
반응형

Adapter Pattern

호환성이 없는 기존 클래스의 인터페이스를 변환하여 재사용할 수 있도록 합니다. OCP를 따릅니다.

이미지 출처: https://jusungpark.tistory.com/22

 

Adapter Pattern 예제 (220v -> 110v)

[Electronic110V interface]

package Java.adapterPattern;

public interface Electronic110V {

    //전원을 공급한다.
    void powerOn();
}

 

[Electronic220V interface]

package Java.adapterPattern;

public interface Electronic220V {
    
    //전원을 공급한다.
    void powerOn();
}

 

[Macbook class implement 110V]

package Java.adapterPattern;

public class MacBook implements Electronic110V{
    @Override
    public void powerOn() {
        System.out.println("Mac Book 110V On");
    }
}
전원 공급을 위해 110V를 사용하도록 110V를 상속한 맥북 클래스를 생성합니다.

 

[MacbookPro class implement 220V]

package Java.adapterPattern;

public class MacBookPro implements Electronic220V{
    @Override
    public void powerOn() {
        System.out.println("Mac Book Pro 220V On");
    }
}
전원 공급을 위해 220V를 사용하도록 220V를 상속한 맥북프로 클래스를 생성합니다.

 

[SocketAdapter class implement 110V]

package Java.adapterPattern;

public class SocketAdapter implements Electronic110V{

    private Electronic220V electronic220V;

    public SocketAdapter(Electronic220V electronic220V){
        this.electronic220V = electronic220V;
    }

    @Override
    public void powerOn() {
        electronic220V.powerOn();
    }
}
맥북 프로를 110V콘센트에 연결하기 위해 220V를 호환할 수 있도록 Adapter 클래스를 구현하였습니다.
110V의 전원 콘센트를 연결해야하므로 110V를 상속받습니다. 그리고 220V 전원을 선언하고 사용합니다.
110V 인터페이스에서 오버라이딩한 메서드 powerOn을 호출하면 220V 인터페이스의 PowerOn을 사용하도록 합니다.

 

[AdapterMain class]

package Java.adapterPattern;

public class AdapterMain {
    public static void main(String[] args) {
        MacBook macBook = new MacBook();
        connect(macBook);

        MacBookPro macBookPro = new MacBookPro();
        Electronic110V adapter = new SocketAdapter(macBookPro);
        connect(adapter);
    }

    //110V 콘센트 -> 연결을 하면 powerOn 메서드 호출
    public static void connect(Electronic110V electronic110V){
        electronic110V.powerOn();
    }
    
    
}
맥북을 어댑터에 연결하여 110V 콘센트에 연결할 수 있도록 합니다. 그리고 adpater 자체를 110V에 연결합니다.

 

결론

위와 같은 방법으로 220V 전원이 필요한 맥북 프로를
110V 콘센트에 연결할 수 있도록 하는 어댑터 패턴을 구현해보았습니다.

 

728x90
반응형

'JAVA' 카테고리의 다른 글

[Java] Proxy Pattern - AOP  (0) 2022.07.31
[Java] Proxy Pattern  (0) 2022.07.31
[Java] Thread Method : wait(), notify()  (0) 2022.07.31
[Java] Thread Synchronization  (0) 2022.07.29
[Java] Thread Method : join()  (0) 2022.07.29