Wann sollten Sie das Besuchermuster wirklich verwenden

evor ich dies als Duplikat markiere, möchte ich mich klarstellen. Ich lese gerade über das Besuchermuster und seine Verwendungsmöglichkeiten.

Ich bin auf diesen Beitrag gestoßen:Wann sollte ich das Besucherdesignmuster verwenden?

und der Benutzer, der die erste Antwort geschrieben hat, sagt wie folgt:

Jetzt wollen wir der Hierarchie eine neue Operation hinzufügen, nämlich, dass jedes Tier seinen Klang erzeugt. Soweit die Hierarchie so einfach ist, können Sie dies mit direktem Polymorphismus tun:
...
Aber auf diese Weise müssen Sie jedes Mal, wenn Sie eine Operation hinzufügen möchten, die Schnittstelle für jede einzelne Klasse der Hierarchie ändern.

Nun, ich verstehe meistens, warum es aus seiner Sicht benötigt wird. Es ist im Grunde eine Möglichkeit, die Kompilierungszeit zu verkürzen, indem Sie es so einstellen, dass nicht jedes Mal, wenn Sie einer Klassenhierarchie eine neue polymorphe Methode hinzufügen möchten, die gesamte Hierarchie neu kompiliert wird.

Aber er sagt auch, dass es in Ordnung ist, der Hierarchie eine neue polymorphe Methode hinzuzufügen, solange es sich um eine "einfache" Hierarchie handelt. Aber meine Frage ist, wann du deine Linie einstellst und entscheidest, was einfach ist und was nicht.
Auch was, wenn eine Hierarchie komplex ist, das Hinzufügen einer neuen Methode aber durchaus Sinn macht, eine Instanzmethode zu sein, anstatt die Operation in einer vollständig anderen Klasse auszuführen?

Nach mehr suchen Ich habe diesen Artikel gefunden, der das Besuchermuster und seine Verwendung erklärthttp: //butunclebob.com/ArticleS.UncleBob.IuseVisito

Der Autor hat ein Beispiel angegeben, in dem durch das Schreiben einer Instanzmethode das Objekt an etwas gekoppelt wird und durch das Verschieben der Methode in eine andere Klasse (Der Besucher) die Entkopplung aufgehoben wird. Das hat mir mehr Sinn gemacht, aber ich bin mir immer noch nicht ganz sicher, wann dieses Muster wirklich verwendet werden sollte. Das erste Argument "Ändern der Hierarchie jedes Mal, wenn Sie eine neue polymorphe Methode hinzufügen möchten ..." scheint mir zu sein eine Ausrede, denn wenn eine Methode in die Hierarchie zu passen scheint, sollte sie logisch vorhanden sein. Angenommen, das Animal - Beispiel ist eine sehr komplexe Hierarchie, und ich hätte beschlossen, make sound - Methode hinzuzufügen, wäre das Hinzufügen einer Instanzmethode eine logische Wahl (in my Verstand)
Aber vielleicht irre ich mich, also bitte ich hier um mehr Einsicht, vielleicht könnte mich jemand aufklären.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage