Adapter 패턴은 객체들 간의 인터페이스 차이를 극복하기 위한 디자인 패턴입니다. 이 패턴은 호환성 없는 객체를 함께 사용해야 할 때 유용합니다. Adapter 패턴은 객체의 인터페이스를 변경하여 다른 객체와의 호환성을 보장합니다. 또한 코드의 재사용성과 유지 보수성을 향상시킵니다. 이번 글에서는 Adapter 패턴에 대해 자세히 알아보겠습니다.

Adapter 패턴이란?

Adapter 패턴은 객체 간의 인터페이스 차이를 극복하기 위한 디자인 패턴입니다. 이 패턴은 호환성 없는 객체를 함께 사용해야 할 때 유용합니다. Adapter 패턴은 클라이언트에서 사용하는 인터페이스를 호환성 없는 객체의 인터페이스로 변환합니다. 이렇게 변환된 인터페이스는 호환성 있는 다른 객체와 함께 사용할 수 있습니다.

호환성 없는 객체들 간의 인터페이스 차이

호환성 없는 객체들 간에는 인터페이스 차이가 존재합니다. 예를 들어, 한 객체는 삼성 전자 제품의 리모컨 인터페이스를 사용하고, 다른 객체는 LG 전자 제품의 리모컨 인터페이스를 사용할 수 있습니다. 이러한 상황에서 Adapter 패턴은 호환성 없는 객체 간의 인터페이스 차이를 극복합니다.

Adapter 패턴의 작동 방식

Adapter 패턴의 작동 방식은 다음과 같습니다. 먼저, 호환성 없는 객체의 인터페이스와 호환성 있는 인터페이스를 정의합니다. 그리고 호환성 없는 객체를 감싸는 Adapter 클래스를 작성합니다. Adapter 클래스는 호환성 없는 객체의 인터페이스를 호환성 있는 인터페이스로 변환합니다. 마지막으로, 클라이언트는 호환성 있는 인터페이스를 사용하여 Adapter 클래스와 호환성 있는 객체를 사용합니다.

public interface SamsungRemote {
    void powerOn();
    void powerOff();
    void channelUp();
    void channelDown();
}

public interface LGRemote {
    void turnOn();
    void turnOff();
    void up();
    void down();
}

public class LGRemoteAdapter implements SamsungRemote {
    private LGRemote lgRemote;

    public LGRemoteAdapter(LGRemote lgRemote) {
        this.lgRemote = lgRemote;
    }

    public void powerOn() {
        lgRemote.turnOn();
    }

    public void powerOff() {
        lgRemote.turnOff();
    }

    public void channelUp() {
        lgRemote.up();
    }

    public void channelDown() {
        lgRemote.down();
    }
}

위의 코드에서 LGRemoteAdapter 클래스는 호환성 없는 LGRemote 객체의 인터페이스를 호환성 있는 SamsungRemote 인터페이스로 변환합니다.

Adapter 패턴의 사용 예시

Adapter 패턴은 다양한 상황에서 사용될 수 있습니다. 예를 들어, 호환성 없는 라이브러리를 사용해야 할 때 Adapter 패턴을 사용할 수 있습니다. 또한, 코드의 유지 보수성을 향상시키기 위해 Adapter 패턴을 사용할 수도 있습니다.

OUTRO:

이번 글에서는 Adapter 패턴에 대해 알아보았습니다. Adapter 패턴은 호환성 없는 객체 간의 인터페이스 차이를 극복하여 객체들을 함께 사용할 수 있도록 합니다. 이 패턴은 코드의 재사용성과 유지 보수성을 향상시키는데 큰 역할을 합니다. Adapter 패턴은 다양한 상황에서 사용될 수 있으며, 이를 통해 코드의 유연성과 확장성을 높일 수 있습니다.

Reference : Adapter Pattern: 호환성 없는 객체들 간의 인터페이스 차이를 극복하기 위한 디자인 패턴

+ Recent posts