GRASP Creator

Das GRASP Creator-Pattern gibt Antworten auf die Frage „Wer ist zuständig für die Erzeugung einer neuen Instanz einer bestimmten Klasse?“. Die Lösung soll folgende Eigenschaften besitzen:
– Lose Kopplung
– gute Verständlichkeit
– Kapselung
– Wiederverwendbarkeit

Das Creator-Pattern stellt einige Kriterien auf, die eine gute Lösung charakterisieren (auch hier darf man das Pattern nicht isoliert anwenden, sondern muß auch die anderen GRASP-Pattern berücksichtigen). Gegeben die Klassen A und B. A soll Instanzen von B erzeugen, wenn:
– A B enthält (Komposition oder Aggregation)
– A B verwaltet
– A B sehr eng benutzt
– A alle Informationen zur Erzeugung von B besitzt (Information Expert)
Je mehr dieser Kriterien zutreffen, desto deutlicher der Hinweis, das A Instanzen von B erzeugen soll.

Damit beantwortet das Creator-Pattern meiner Meinung nach auch folgende Frage (die zu Glaubenskriegen führen kann):
Wenn die Klasse A Instanzen von B erzeugt, und B eine obligatorische Kompositionsbeziehung zu C hat:

GRASP_creator
Eine Instanz von B muss immer eine Instanz von C enthalten, dies wird über den Konstruktor von B sichergestellt. Wenn A nun eine Instanz von B erzeugt, übergibt es dann als Konstruktor-Argument eine Instanz von C, oder aber alle einzelnen Informationen, die B zur Erzeugung von C benötigt?

Die Kriterien des Creator-Pattern liefern den Hinweis: Während die erste Lösung (A übergibt eine Instanz von C an den Konstuktor von B) lediglich den Punkt „besitzt alle Informationen, um C zu erzeugen“ erfüllt, deckt die andere Lösung alle Kriterien ab, und unterstützt somit die am Anfang dieses Texts genannten Eigenschaften der Lösung besser.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.