본문 바로가기
프로그래밍 놀이터/디자인 패턴, 리펙토링

Visitor Pattern ( 방문자 패턴, visitor 패턴 )

by 돼지왕왕돼지 2017. 6. 29.

 Visitor Pattern ( 방문자 패턴, visitor 패턴 )


https://en.wikipedia.org/?title=Visitor_pattern


-

객체의 구조와 기능을 분리시키는 패턴.

구조는 변하지 않으면서 기능만을 따로 추가하거나 확장되어야 할 경우에 사용하는 패턴이다.



-

visitor pattern 은 2개의 interface 가 필요하다.


하나는 element 로 visitor 를 맞이하는 accept 라는 함수를 제공한다.

다른 하나는 visitor 로 concrete 한 element 를 받아들이는 visit 함수를 제공한다.


interface IElement{

     void accept(IElementVisitor visitor);

}


inteface IElementVisitor{

     void visit(ConcreteElement element);

     void visit(ConcreteElement2 element);

     ...

}



-

각 ConcreateElement 에서는 visitor 에 대해 자신을 전달하면 된다.

Visitor 는 늘어나는 Concrete Element 들에 대해 visit 함수를 추가해주면 된다.



-

Visitor 의 종류에 따라서 각 Element 들에 대해 수행하는 일이 다르다.



-




댓글0