Skip to content

Latest commit

 

History

History
51 lines (35 loc) · 1.45 KB

File metadata and controls

51 lines (35 loc) · 1.45 KB

방문자 패턴은 알고리즘을 객체 구조에서 분리시키는 디자인 패턴이다. 기존 클래스 필드 정보를 유지하면서 새로운 연산을 추가하는 방식 중 하나이다. 비슷한 동작을 수행하는 로직을 Visitor 객체에 모을 수 있기 때문에 코드를 유지보수하기 좋지만, Element와 Visitor 간의 결합도가 상승한다는 단점이 있다.


예시 코드

public interface Element {
    void visit(Visitor visitor);
}

public class ElementA implements Element{

    @Override
    public void visit(Visitor visitor) {
        visitor.visit(this);
    }
}

public class ElementB implements Element{

    @Override
    public void visit(Visitor visitor) {
        visitor.visit(this);
    }
}

Visitor라는 클래스에 visit할 수 있는 두개의 Element를 만들었다.


public class Visitor {

    public void visit(ElementA element) {
        System.out.println("ElementA가 방문함");
    }

    public void visit(ElementB element) {
        System.out.println("ElementB가 방문함");
    }
}

어떤 Element가 방문했는지에 따라 다른 동작을 수행한다. (오버로딩)

링크로 가면 코드를 볼 수 있다.