어댑터 패턴

어댑터 패턴은 호환되지 않은 인터페이스를 연결하는 디자인패턴입니다. 어댑터 패턴은 어려운거 없으니 바로 확인해보겠습니다.

 

 

 

 

 

public interface Target {

    void doSomething();
}
public class Adaptee {

    public void action() {
        System.out.println("action");
    }
}

 

Target과 Adaptee 는 서로 호환될 수 없는 관계입니다. 이 관계를 호환되게 만드는 것이 어댑터 패턴입니다.

 

 

우리는 기존코드를 수정하지 않으면서 Target 을 통해 Adaptee 클래스를 통제하고싶습니다. 그래서 두 클래스 사이에 새로운 클래스를 추가하겠습니다.

 

public class Adapter implements Target {

    private final Adaptee adaptee;

    public Adapter(Adaptee adaptee) {
        this.adaptee = adaptee;
    }

    @Override
    public void doSomething() {
        adaptee.action();
    }
}

 

어댑터 패턴 끝났습니다.

 

 

 

Target 인터페이스를 Adapter 클래스에서 상속받고 필드에 Adaptee 를 받아 doSomething 에서 action 메소드를 오버라이딩 했습니다.

 

 

 

이 어댑터 패턴은 기존 코드의 수정 없이 호환되지 않는 클래스를 이어줄 수 있다는 장점이 있습니다. 다만 호환되지 않는 클래스의 연결로 인해 코드 복잡성이 증가하면서 유지보수가 어려워 질 수 있다는 단점도 존재합니다.

+ Recent posts