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

Head First Design Patterns
에릭 프리먼 외 지음,
서환수 옮김
한빛미디어

GOF의 디자인 패턴
Erich Gamma 외 지음,
김정아 옮김
피어슨에듀케이션코리아
이올린에 북마크하기(0) 이올린에 추천하기(0)