[OODP] Visitor Pattern(방문자 패턴)

Peace·2021년 5월 17일
0

[OODP] Visitor Pattern

  • 실제 로직을 가지고 있는 객체(Visitor, 방문자)가 로직을 적용할 객체(Element, 방문 공간)를 방문하면서 실행하는 패턴.
  • 로직과 구조를 분리하는 패턴. 로직과 구조가 분리되면, 구조를 수정하지 않고도 새로운 동작을 기존 객체 구조에 추가할 수 있다.
  • object내부에 operation(?)들로 인해 cohesion이 떨어질때
  • 방문자와 방문 공간을 분리하여, 방문 공간이 방문자를 맞이할 때, 이후에 대한 행동을 방문자에게 위임하는 패턴.
  • oop에서는 객체안에, 객체가 하는 행동을 method로 가지고 있음. but visitor패턴은 행동의 대상이 되는 객체가 행동을 일으키는 객체를 입력으로 받는다.
  • 방문자가 방문 공간을 가서 하는 행동을 정의 해놓은 패턴(?) 그래서, 방문자와 방문 공간을 분리 해놓음. 하지만, 방문자가 방문 공간에 가서 하는 행동은 방문자에 정의되어있다.

사용할 때

  • object구조에 object 속성과 관계없는 operation이 많이 수행되어야 할 때.
  • object구조는 변하지 않지만, operation들이 많이 변경될 때.
  • 같은 인터페이스를 구현하는 다수의 object에 대해 연산을 수행해야 하는 operation이 필요할 때.

예제 UML

해당 UML에서는 visitor라는 로직을 가지고 있는 interface가 존재한다. 이 안에 있는 Method들은 방문할 element수만큼 되어있다. element들은 visitor객체를 받아서 실행한다.(맞나,,,??)

Chain of Responsibility 와 visitor패턴

  • chain of responsibility는 하나의 message가 여러 객체에 존재하는 알고리즘을 거치지만, visitor패턴은 자신에 맞는

느낀점(?)

  • 해당 패턴을 왜 쓰는지에 대한 정확한 이해가 부족한 거 같다. 또한, 어떤 패턴인지 아직 잘 이해가 안된다,,,

Reference

profile
https://peace-log.tistory.com 로 이사 중

0개의 댓글

관련 채용 정보