2024.05.22 08:39
방문자 패턴은 알고리즘을 객체 구조에서 분리시키는 디자인 패턴이다. 기존 클래스 필드 정보를 유지하면서 새로운 연산을 추가하는 방식 중 하나이다. 비슷한 동작을 수행하는 로직을 Visitor 객체에 모을 수 있기 때문에 코드를 유지보수하기 좋지만, Element와 Visitor 간의 결합도가 상승한다는 단점이 있다.
public interface Element { void visit(Visitor visitor);} public class ElementA implements Element{ @Override public void visit(Visitor visitor) { visitor.visit(this); }} public class ElementB implements Element{ @Override public void visit(Visitor visitor) { visitor.visit(this); }}
Visitor라는 클래스에 visit할 수 있는 두개의 Element를 만들었다.
public class Visitor { public void visit(ElementA element) { System.out.println("ElementA가 방문함"); } public void visit(ElementB element) { System.out.println("ElementB가 방문함"); }}
어떤 Element가 방문했는지에 따라 다른 동작을 수행한다. (오버로딩)
이 링크로 가면 코드를 볼 수 있다.