• Menu
  • Skip to right header navigation
  • Skip to main content
  • Skip to primary sidebar

Offerte akzeptieren Muster

July 31, 2020 //  by darrenjac

Das Element deklariert eine Annahmemethode, um einen Besucher zu akzeptieren, wobei der Besucher als Argument verwendet wird. Konkrete Elemente, die von der Elementklasse abgeleitet werden, implementieren die Accept-Methode. In seiner einfachsten Form ist dies nicht mehr als ein Aufruf zur Besuchsmethode des Besuchers. Zusammengesetzte Elemente, die eine Liste von untergeordneten Objekten verwalten, iterieren in der Regel über diese und rufen die Accept-Methode jedes untergeordneten Elements auf. Wenn die accept-Methode im Programm aufgerufen wird, wird ihre Implementierung sowohl basierend auf dem dynamischen Typ des Elements als auch auf dem statischen Typ des Besuchers ausgewählt. Wenn die zugeordnete Besuchsmethode aufgerufen wird, wird ihre Implementierung sowohl basierend auf dem dynamischen Typ des Besuchers als auch auf dem statischen Typ des Elements ausgewählt, wie es innerhalb der Implementierung der Accept-Methode bekannt ist, die mit dem dynamischen Typ des Elements identisch ist. (Als Bonus, wenn der Besucher ein Argument des typs des angegebenen Elements nicht verarbeiten kann, wird der Fehler vom Compiler abgefangen.) Das Besuchermuster erfordert eine Programmiersprache, die einzelne Dispatche unterstützt, wie es gängige objektorientierte Sprachen (z. B. C++, Java, Smalltalk, Objective-C, Swift, JavaScript, Python und C`) tun. Berücksichtigen Sie unter dieser Bedingung zwei Objekte eines Klassentyps. das eine wird als das Element bezeichnet, und das andere ist Besucher. Ein grundlegender Vorgang in dieser Typhierarchie ist das Speichern einer Zeichnung im systemeigenen Dateiformat. Auf den ersten Blick mag es akzeptabel erscheinen, allen Typen in der Hierarchie lokale Speichermethoden hinzuzufügen.

Es ist aber auch nützlich, Zeichnungen in anderen Dateiformaten speichern zu können. Das Hinzufügen von immer mehr Methoden zum Speichern in viele verschiedene Dateiformate überträgt bald die relativ reine ursprüngliche geometrische Datenstruktur. So wird die Implementierung der Besuchsmethode sowohl auf der Grundlage des dynamischen Typs des Elements als auch des dynamischen Typs des Besuchers gewählt. Dadurch wird der doppelte Dispatch effektiv implementiert. Für Sprachen, deren Objektsysteme mehrere Dispatche unterstützen, wie z. B. Common Lisp oder C, über die Dynamic Language Runtime (DLR), wird die Implementierung des Besuchermusters erheblich vereinfacht (auch bekannt als Dynamic Visitor), da die Verwendung einer einfachen Funktionsüberlastung für alle besuchten Fälle ermöglicht wird. Ein dynamischer Besucher, sofern er nur mit öffentlichen Daten arbeitet, entspricht dem Open/Closed-Prinzip (da er bestehende Strukturen nicht ändert) und dem Prinzip der einheitlichen Verantwortung (da er das Besuchermuster in einer separaten Komponente implementiert). Im obigen UML-Klassendiagramm implementiert die ElementA-Klasse keinen neuen Vorgang direkt. Stattdessen implementiert ElementA einen Dispatching-Vorgang accept(visitor), der eine Anforderung an das “akzeptierte Besucherobjekt” (visitor.visitElementA(this)) “sendet” (delegiert). Die Visitor1-Klasse implementiert den Vorgang (visitElementA(e:ElementA)).

ElementB implementiert dann accept(visitor) durch Dispatching an visitor.visitElementB(this). Die Visitor1-Klasse implementiert den Vorgang (visitElementB(e:ElementB)). Der Client erstellt die Objektstruktur direkt oder indirekt und instanziiert die konkreten Besucher. Wenn ein Vorgang ausgeführt werden soll, der mithilfe des Besuchermusters implementiert wird, ruft er die Accept-Methode der Elemente der obersten Ebene auf. Das Visitor [1] Designmuster ist eines der dreiundzwanzig bekannten GoF-Entwurfsmuster, die beschreiben, wie wiederkehrende Entwurfsprobleme gelöst werden können, um flexible und wiederverwendbare objektorientierte Software zu entwerfen, d. h. Objekte, die einfacher zu implementieren, zu ändern, zu testen und wiederzuverwenden sind. Besucher-Designmuster ist eines der Verhaltensmuster.

Es wird verwendet, wenn wir einen Vorgang für eine Gruppe ähnlicher Objekttypen ausführen müssen. Mit Hilfe des Besuchermusters können wir die Betriebslogik von den Objekten in eine andere Klasse verschieben. Ein weiteres Motiv ist die Wiederverwendung von Iterationscode. Beispielsweise kann das Iterieren über eine Verzeichnisstruktur mit einem Besuchermuster implementiert werden. Dies würde das Erstellen von Dateisuchen, Dateisicherungen, Verzeichnisentfernung usw. ermöglichen, indem ein Besucher für jede Funktion implementiert wird, während der Iterationscode wiederverwendet wird.

Previous Post: « Nachweis über ehrenamtliche tätigkeit Muster
Next Post: P30 pro Vertrag mit watch »

Primary Sidebar

Address

311 14th Street Suite 2
Atlanta, GA 30318
GGSE - Structural Engineers

Contact

Robert B. Goodman, P.E.
404-561-0660
mailto:bob@ggse.us

Michael J. Giannavola, P.E., LEED AP
678-938-5467
mailto:mike@ggse.us

Chris M. Hines, P.E.
404-969-6895
mailto:chris@ggse.us

Quick Contact

Copyright © 2021 · Goodman & Giannavola Structural Engineers