visitor 예제

visitor 예제

예를 들어 새 YamlElement를 추가하면 이 요소를 처리하기 위해 원하는 새 메서드로 모든 기존 방문자를 업데이트해야 합니다. 이에 따라 10명 이상의 구체적인 방문자가 있는 경우 모든 방문자를 업데이트하는 것이 번거로울 수 있습니다. 구체적인 클래스에서 accept() 메서드의 구현, 방문자의 호출 visit() 메서드 및 인수로 자신을 전달하는 방법을 확인합니다. 방문자 패턴에 대한 인정된 이의제기는 함수분해에 대한 회귀를 나타낸다-알고리즘을 데이터 구조체로부터 분리한다. 이것은 합법적인 해석이지만, 아마도 더 나은 관점/근거는 비전통적인 동작을 전체 객체 상태로 승격시키는 목표일 것입니다. 이 예제는 JSON 및 XML 콘크리트 요소로 구성된 사용자 지정 문서 개체입니다. 요소는 공통 추상 수퍼 클래스인 요소입니다. 또한 방문자 패턴을 패턴으로 아직 디자인되지 않은 코드로 리팩터링하는 것이 어려울 수 있습니다. 또한 방문자 코드를 추가하면 모호해 보일 수 있습니다. 방문자는 강력하지만 필요한 경우에만 사용해야 합니다.

다음은 코드 Java 라이브러리의 패턴 몇 가지 예입니다: 방문자 [1] 디자인 패턴은 유연하고 재사용 가능한 객체 지향 소프트웨어를 설계하기 위해 반복되는 디자인 문제를 해결하는 방법을 설명하는 잘 알려진 GoF 디자인 패턴 23 개 중 하나입니다. 을 사용, 변경, 테스트 및 재사용하기 쉬운 개체입니다. ConcreteVisitor – 방문자의 각 유형에 대한 모든 방문 방법, 추상 방문자에 선언, 구현해야합니다. 각 방문자는 다른 작업에 대한 책임이 있습니다. 또한 방문자는 결국 통과하는 요소에 따라 데이터를 집계할 수 있습니다. 위의 클래스 다이어그램에서, 우리는 맥과 리눅스 운영 체제에 대해 구성된 라우터가 있습니다. 우리는 또한 창에 대한 기능을 추가해야하는 경우, 나는 어떤 클래스를 변경할 필요가 없습니다, 그냥 새 방문자 를 정의 윈도우구성 및 라우터 방문자 인터페이스에 정의 된 방문() 메서드를 구현. 그것은 더 이상 수정하지 않고 원하는 기능을 제공 할 것입니다. 그것은 방문자 디자인 패턴의 좋은 예입니다, 나는 “방문자 패턴 혜택”에 대한 몇 가지 개인적인 의견을 hava. 방문자 디자인 패턴에서는 항목을 추가하지 않고 새 작업을 쉽게 추가할 수 있습니다. 요약 가중치(가능한 경우)와 같은 작업을 추가하려면 ShoppingCartVisitor의 구현을 추가하기만 하면 됩니다. 그러나 항목을 추가하면 파일이 추가되고 두 개의 파일이 수정됩니다.

🙂 방문자 디자인 패턴의 좋은 설명 /사용 사례를 둘러 보았습니다. 나는 이것이 지금까지 가장 좋은 예 / 설명임을 인정해야합니다. 저자에게 찬사를 보아주세요! 방문자 패턴은 구조를 변경하거나 수정하지 않고 개체의 계층 구조에 새 작업을 도입하려는 이러한 유형의 문제에 적합합니다. 이 솔루션에서는 두 가지 방법 즉, 도입 하 여 이중 디스패치 기술을 구현 합니다.

Share this post