visitor 패턴 예제

 

이 예제는 패턴 적용 가능성을 보여 줄 수 있는 약간 간단 합니다. 자바에서 방문자 디자인 패턴의 예를 보자. 패턴의 두 번째 부분을 추가하여 진행해 보겠습니다: 다음 예제는 Java 언어에 있으며 노드 트리의 내용(이 경우 자동차의 구성 요소를 설명하는)을 인쇄하는 방법을 보여 주어 보겠습니다. 각 노드 하위 클래스(휠, 엔진, 바디 및 자동차)에 대한 인쇄 메서드를 만드는 대신 한 방문자 클래스(CarElementPrintVisitor)는 필요한 인쇄 작업을 수행합니다. 다른 노드 하위 클래스는 제대로 인쇄하기 위해 약간 다른 작업이 필요하기 때문에 CarElementPrintVisitor는 방문 메서드에 전달된 인수의 클래스에 따라 작업을 디스패치합니다. 다른 파일 형식에 대한 저장 작업과 유사한 CarElementDoVisitor도 마찬가지입니다. 방문자 패턴에서는 요소 클래스의 실행 알고리즘을 변경하는 방문자 클래스를 사용합니다. 이러한 방식으로 요소의 실행 알고리즘은 방문자가 다를 때 달라질 수 있습니다. 이 패턴은 동작 패턴 범주 아래에 있습니다. 패턴에 따라 요소 개체는 방문자 개체가 요소 개체에 대한 작업을 처리하도록 방문자 개체를 허용해야 합니다. 라우터 방문자는 라우터 인터페이스를 종속성으로 사용해야합니다. SOLID DI 원칙을 위반하는 구체적인 라우터 클래스를 사용하고 있습니다.

방문자 패턴의 단점은 그렇지 않으면 인터페이스와 모든 구현을 변경해야 할 디자인 시 방문() 메서드의 반환 유형을 알아야 한다는 것입니다. 또 다른 단점은 방문자 인터페이스의 구현이 너무 많으면 확장하기가 어렵다는 것입니다. 방문자 디자인 패턴의 좋은 설명 / 사용 사례를 둘러 보았다. 나는 이것이 지금까지 가장 좋은 예 / 설명임을 인정해야합니다. 저자에게 찬사를 보아주세요! 오늘 우리는 덜 알려진 패턴 중 하나를 보면, 종종 사용되지 않고 따라서 적절하게