Visitor Pattern
1. 컨텍스트
객체의 요소에 대해 수행하는 오퍼레이션을 나타낸다. Visitor는 자신의 오퍼레이션의 대상이 되는 요소를 갖는 클래스를 수정하지 않고 새로운 오퍼레이션을 정의하는 것을 가능하게 한다.
2. 적용 영역
l 객체의 구조를 정의하는 클래스가 잘 변하지 않으나, 이러한 구조 상에서 새로운 오퍼레이션을 정의하고자 하는 경우
l 하나의 객체에 대해서 관련이 적은, 상이한 오퍼레이션을 수행할 필요가 있는 경우, 이러한 오퍼레이션에 의해 클래스가 난잡하게 되는 것을 막기 위해 사용한다.
3. 구조
4. 적용 결과
l 새로운 오퍼레이션 추가가 용이하다.
l Visitor는 관련 있는 오퍼레이션을 묶고, 관련이 적은 오퍼레이션을 분리시킨다.
l Visitor의 사용은 ConcreteElement 인터페이스가 내부 상태에 접근할 수 있는 공개된 오퍼레이션 제공을 요구하여, 캡슐화(encapsulation)를 약화시킨다.
5. 관련 패턴
l Visitor 패턴은 Composite 패턴에 의해 정의된 객체 구조에 대해 오퍼레이션을 적용하는데 사용될 수 있다.
l Visitor 패턴은 Interpreter 역할 수행을 위해 적용될 수 있다.
6. 참고 문헌
온라인
위키 피디아: Visitor
자바월드 아티클: Reflect on the Visitor design pattern
서적 안내
Design Patterns: Elements of Reusable Object-Oriented Software
위키 피디아: Visitor
자바월드 아티클: Reflect on the Visitor design pattern
서적 안내
![]() | Head First Design Patterns 에릭 프리먼 외 지음, 서환수 옮김 한빛미디어 |
![]() | GOF의 디자인 패턴 Erich Gamma 외 지음, 김정아 옮김 피어슨에듀케이션코리아 |



