http://c2.com/cgi/wiki?VisitorPattern
http://en.wikipedia.org/wiki/Visitor_pattern

Composition 패턴을 구현한 구조물에 어떤 기능을 수행하고 싶을 때 해당 기능을 별도의 인터페이스로 분리해낸것이 Visitor 패턴. 이렇게 하여 기존의 구조물에 해당하는 코드는 변경하지 않고 그것들을 사용하는 새로운 기능을 새로 추가할 수 있으니 Open-Closed 원칙을 달성했다고 볼 수 있다.


생각해보니 이런 패턴이 적용된 것들이 꽤 많으며, 적용할 수 있는 곳도 많은 것 같다. 윈도우에서 폴더나 파일을 우클릭한 다음에 저장, 복사, 이동 등을 하는 것들이 모두 이 패턴을 이용해서 구현하지 않았을까..

게다가 ASM은 이 패턴을 사용하여 BCEL이나 SERP 같은 코드 조작 툴보다 훨씬 뛰어난 성능의 라이브러리를 제공하고 있다.

그렇다 사실은 ASM 공부하다가 맨 첨에 등장하는게 이 패턴이라 잠깐 보고 넘어가기로 한 것이다. ㅋㅋ

흠... 하지만 ASM이 조작하는 클래스 처럼 클래스 아래 변수 쫙! 메서드 쫙! 변수와 메서드에는 어트리뷰터가 쫙! 있는 단순구조가 아니라, 파일이나 폴더 처럼 파일 안에 파일 쫙! 그 안에 또 파일 쫙! 이런 트리구조라면 Visitor 패턴을 개조한 Hierarchical Visitor 패턴이 더 효율적이고 유용하겠다.

http://c2.com/cgi/wiki?HierarchicalVisitorPattern

자 어서 ASM도 보도록 하자. ㄱㄱㄱㄱ