디자인 패턴/구조

적응자 패턴

sdafdq 2022. 11. 21. 12:36

객체지향은 이미 구현되어 있는 클래스를 이용하여 다른 기능을 만들기 위해 상속이라는 기능이 있지만, 이는 객체지향에서 금기시 되어지고 있다.

이유는 

다형성을 위배하고, 불필요한 인터페이스를 전파하며, 클래스 계층관계를 이해하는데 혼돈을 준다.

 

그 단점을 파훼하기 위한 패턴이 적응자 패턴이다.

적응자 패턴은 어떤 기능을 가진 클래스가 필요한 기능이 있는 클래스의 객체를 가지고 있는 패턴이다.

 

class Stack<T>{
    private Vector<T> vector = new Vector<T>();
    public void push(T t){ vector.add(t); }

    public T pop(){
        if(vector.size() == 0) return null;
        T t = vector.get(vector.size() - 1);
        vector.remove(vector.size() - 1);
        return t;
    }
}

스택 기능을 구현한 클래스 인데, 빌트인 클래스 Vector의 함수기능이 필요하다. 굳이 코드량을 늘려 새로 만들 필요없이 기존에 잘 정의된 빌트인 클래스를 이용하면 된다.

 

저렇게 가지고 있는다면 굳이 Vector를 상속받아 Vector의 API가 바뀔때마다 수정해 줄 필요도 없다.

'디자인 패턴 > 구조' 카테고리의 다른 글

복합체 패턴  (0) 2022.11.24
가교 패턴  (0) 2022.11.21