- Erzeugungsmuster
-
Erzeugungsmuster (engl. Creational Patterns) sind eine Teilmenge der Entwurfsmuster aus dem Bereich der Softwareentwicklung, die der Erzeugung von Objekten dienen. Erzeugungsmuster entkoppeln die Konstruktion eines Objekts von seiner Repräsentation. Die Objekterzeugung wird gekapselt und ausgelagert (z. B. in eine Fabrik), um den Kontext der Objekterzeugung unabhängig von der konkreten Implementierung zu halten, gemäß der Regel: "Programmiere auf die Schnittstelle, nicht auf die Implementierung!"
Inhaltsverzeichnis
Beispiel für ein Erzeugungsmuster
Wenn statt
konto = new GiroKonto();
eine Fabrikmethode eingesetzt wird,
KontoFactory kontoFactory = new KontoFactory(); typ = KontoFactory.GIRO; konto = kontoFactory.getInstance(typ);
erhält man die Flexibilität, die Klasse des zu erzeugenden Objekts (hier GiroKonto) zur Laufzeit zu bestimmen, anstatt sich bereits zu Übersetzungszeit auf die konkrete Klasse festlegen zu müssen.
Die Gründe für die Entkopplung von Konstruktion und Repräsentation eines Objekts sind je nach Erzeugungsmuster verschieden:
Kurzbeschreibung und Abgrenzung verschiedener Erzeugungsmuster
Singleton
Von einer Klasse soll nur ein einziges Mal ein Objekt erzeugt werden, z. B. weil eine zentrale Struktur erzwungen werden soll oder eine korrespondierende Hardware-Komponente physikalisch nur einmal existiert.
Fewton
Variante des Singleton-Musters, das die Anzahl erzeugter Objekte kontrolliert, z. B. um die Anzahl gleichzeitig geöffneter Datenbankverbindungen auf einen für eine gute Gesamtleistung erforderlichen Wert zu reduzieren.
Abstrakte Fabrik (abstract factory)
Die abstrakte Fabrik definiert eine Schnittstelle zur Erzeugung einer Familie von Objekten, wobei die konkreten Klassen der zu erzeugenden Objekte erst zur Laufzeit festgelegt werden.
Fabrikmethode (factory method)
Mehrere verwandte Typen von Objekten (Klassen) implementieren die gleiche Schnittstelle, unterscheiden sich jedoch in Namen und Verwendungszweck. Nun soll in einem Programmkontext ein konkretes Objekt eines bestimmten Typs verwendet werden.
Erbauer (Builder)
Das Entwurfsmuster Erbauer trennt den Aufbau komplexer Objekte von ihrer konkreten Darstellung. Dadurch soll ermöglicht werden, dass derselbe Konstruktionsprozess verschiedene Darstellungen erzeugen kann.
Prototyp (Prototype)
Das Entwurfsmuster Prototyp verwendet ein Objekt als Vorlage (Prototyp), um daraus weitere Objekte zu erzeugen, die anschließend modifiziert werden können.
Wikimedia Foundation.