Besuchermusterimplementierung bei Nichtverfügbarkeit des Quellcodes

Einer der Gründe, das @ in Betracht zu zieh Visitor_pattern:

in praktisches Ergebnis dieser Trennung ist die Fähigkeit, bestehende Objektstrukturen um neue Operationen zu erweitern, ohne diese Strukturen zu änder

Angenommen, Sie verfügen nicht über den Quellcode von Bibliotheken von Drittanbietern und haben eine Operation für verwandte Objekte hinzugefügt.

Da Sie kein Objekt haben, können Ihre Elemente (Klassen von Drittanbietern) nicht geändert werden, um Besucher hinzuzufügen.

In diesem Fall ist ein doppelter Versand nicht möglich.

So welche Option wird generell bevorzugt?

Option 1: Erweitern Sie eine weitere Vererbungshierarchie über die Klasse eines Drittanbieters und implementieren Sie das Muster wie im Bild gezeigt mit doppeltem Versan

Für eine bestimmte Hierarchie der Klasse B, die die Klasse A erweitert, werde ich hinzufügen

ElementA extends A
ElementB extends B

Now ConcreteElements werden von ElementA anstelle von Klasse A abgeleitet.

Cons: Die Anzahl der Klassen wird zunehmen.

Option 2: Verwenden Sie die Besucherklasse, eine zentrale Hilfsklasse, und erledigen Sie die Arbeit im Einzelversand.

Cons: Wir folgen nicht wirklich dem Besuchermuster gemäß UML-Diagramm.

Korrektur, wenn ich falsch liege.

Antworten auf die Frage(12)

Ihre Antwort auf die Frage