Zum Inhalt springen

Erzeugungsmuster

aus Wikipedia, der freien Enzyklopädie
Dies ist die aktuelle Version dieser Seite, zuletzt bearbeitet am 25. Mai 2025 um 09:52 Uhr durch imported>Meinichselbst (Parameter fix).
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Erzeugungsmuster ({{Modul:Vorlage:lang}} Modul:Vorlage:lang:103: attempt to index field 'wikibase' (a nil value)) sind eine Teilmenge der Entwurfsmuster aus dem Bereich der Softwareentwicklung, die der Erzeugung von Objekten dienen. Sie 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 gegen die Schnittstelle, nicht gegen die Implementierung!“

Entwurfsmuster beinhalten zwei Ideen: Die erste besteht darin, das Wissen über die konkreten Klassen zu verbergen, die zweite darin, zu verbergen, wie Instanzen dieser Klassen erzeugt und verbunden werden.<ref>Vorlage:Cite book/URLVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref>

Erzeugungsmuster werden in Objekt-Erzeugungsmuster und Klassen-Erzeugungsmuster aufgeteilt. Erstere behandeln Entwurfsmuster, die mit der Objekterzeugung zu tun haben und Teile der Objekterzeugung anderen Objekten überlassen. Letztere haben mit der Klasseninstanziierung zu tun und überlassen die Klasseninstanziierung Unterklassen.<ref>Vorlage:Cite book/URLVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref>

Beispiel für ein Erzeugungsmuster

Wenn statt

    konto = new GiroKonto();

eine Fabrikmethode eingesetzt wird,

    KontoFactory kontoFactory = new KontoFactory();
    typGiro = kontoFactory.GIRO;
    konto = kontoFactory.getInstance(typGiro);

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

Abstrakte Fabrik ({{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value))
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.
Einzelstück ({{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value))
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.
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.
Fabrikmethode ({{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value))
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.
Multiton
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.
Prototyp ({{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value))
Das Entwurfsmuster Prototyp verwendet ein Objekt als Vorlage (Prototyp), um daraus weitere Objekte zu erzeugen, die anschließend modifiziert werden können.

(Quelle:<ref name="GoF-Creation">Erich Gamma, Richard Helm, Ralph E. Johnson, John Vlissides: Creational Patterns. In: GofPatterns. 30. November 2020, abgerufen am 30. November 2020 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>)

Einzelnachweise

<references />

Siehe auch

<templatestyles src="Erweiterte Navigationsleiste/styles legacy.css" />Vorlage:Klappleiste/Anfang

Erzeugungsmuster

Abstrakte Fabrik | Erbauer | Fabrikmethode | Prototyp | Singleton | Multiton | Objektpool

Strukturmuster

Adapter | Brücke | Decorator | Fassade | Fliegengewicht | Kompositum | Stellvertreter

Verhaltensmuster

Beobachter | Besucher | Interpreter | Iterator | Kommando | Memento | Schablonenmethode | Strategie | Vermittler | Zustand | Zuständigkeitskette | Interceptor | Nullobjekt | Protokollstapel

Muster für objekt-
relationale Abbildung

Datentransferobjekt | Table Data Gateway | Row Data Gateway | Active Record | Unit of Work | Identity Map | Lazy Loading | Identity Field | Dependent Mapping | Embedded Value | Serialized LOB | Inheritance Mapper | Metadata Mapping | Query Object | Command-Query-Responsibility-Segregation

Nachrichten-
übermittlungsmuster
andere

Application Controller | Business Delegate | Data Access Object | Dependency Injection | Extension Interface | Fluent Interface | Inversion of Control (IoC) | Lock | Model View Controller (MVC) | Model View Presenter (MVP) | Model View Update (MVU) | Model View ViewModel (MVVM) | Page Controller | Registry | Remote Facade | Repository | Service Locator | Session State | Table Module | Template View | Threadpool | Transaction Script | Transform View | Two-Step View | Value Object

Vorlage:Klappleiste/Ende