DesignPatterns에서 BehavioralPatterns의 하나
DataStructure와 그 처리를 분리한다. 데이터구조안을 돌아다니는 방문자 클래스를 준비하고, 그 방문자에게 처리를 맡긴다. 새로운 처리를 추가하고 싶으면 새로운 방문자를 만들면 된다. 데이터구조는 그 안에 방문자를 받아들이는 문이 필요하다.
visitor는 acceptor를 방문하고, acceptor는 visitor를 받아들이는 상호호출의 형태가 쓰인다. 이를 DoubleDispatch라고 한다. 내부적으로 OpenClosedPrinciple이 쓰였다.
Structure
Example
파일시스템(디렉토리, 파일) DataStructure를 돌아다니는 방문자. VisitorDirectory.java