조금 이해하는게 쉽지는 않다.(재귀 관계적 사고가 필요함)
천천히 봐보자.
먼저 위키피디아에 따르면 visitor 패턴(방문자 패턴)은 알고리즘(동작)을 객체 구조에서 분리시키기 위한 패턴이다. 이렇게 분리 하면 구조의 변화 없이 새로운 동작을 추가시킬 수 있다는 장점을 가지게 된다.(…… 이걸보고 이해가 안되는건 나만인가)
visitor 패턴은 컴포지트 패턴과 관련이 있다.(위키피디아에서는 같이 보기로 컴포지트 패턴 링크 제공)
가령, Car 라는 객체가 있다면 visitor 패턴에서는 Car는 Wheel 과 Handle을 가진 구조체(객체구조)가 된다. 이때 Visitor는 car객체내의 Wheel과 Handle 의 가격을 확인하는 알고리즘(동작)을 가지게 되는데(해당 알고리즘은 visit 메소드로 구현) 후에 Wheel의 마모 정도를 확인하는 알고리즘을 추가하고 싶다면 visitor를 추가하는 식으로 알고리즘을 추가할 수 있다.
이렇게 작동하는 것이 visitor패턴의 알고리즘과 객체구조 분리라고 이해.