Zusammenfassung "Gang of Four"


Creational Pattern


Factory Pattern

Das Factory Pattern stellt einen Mechanismus zur Verfügung um Objekte zu erzeugen, deren Typ zur Compile-Zeit nicht bekannt ist. Die zu erzeugenden Objekte implementieren normalerweise eine gemeinsame Schnittstelle oder erweitern eine gemeinsame (abstrakte) Basisklasse.

Abstract Factory Pattern

Das Abtract Factory Pattern dient dazu Objekte aus einer Familie von Objekten zu erzeugen, deren Typ zur Compile-Zeit nicht bekannt ist. Die zu erzeugenden Objekte haben im Normalfall eine gemeinsame Schnittstelle. Weiterhin haben die Objekte der jeweiligen Familie wiederum eine gemeinsame Schnittstelle.

Singleton Pattern

Das "Singleton Pattern" soll sicherstellen, dass von einer Klasse nur ein einzelnes Objekt Inszanziert werden kann.

Builder Pattern

Mit Hilfe des Bulder Patterns wird die eigentliche Konstruktion eines Objektes vom Konstruktionsprozess getrennt. Es lassen sich dadurch unterschiedliche Representationen eines Objektes unter Verwendung des gleichen Konstruktionsprozesses erzeugen.

Prototype Pattern

Das Prototype Pattern kommt zum Einsatz, wenn die Objekterzeugung aufwendig bzw. zeitaufwendig ist. Dabei wird zur Objekterzeugung eine Kopie von einem vorhandenen Objekt erzeugt und die notwendigen Anpassungen an der Kopie vorgenommen.


Structual Pattern


Adapter Pattern

Das "Adapter Pattern" kommt zur Anwendung, wenn die Schnittstelle einer Klasse in die Schnittstelle einer anderen Klasse überführt werden soll.

Bridge Pattern

Mit dem Bridge Pattern wird eine Trennung von Abstraktion/Interface und der konkreten Implementierung vorgenommen. Implementation und Abstraktion können mithilfe des Bridge Patterns unabhängige Vererbungshirachien aufbauen. Konkrete Implementierungen können zur Laufzeit ausgetaucht werden.

Composite Pattern

Mithilfe des Composite Pattern können Objekt - Baumstrukturen verwaltet werden. Jeder Knotenpunkt kann dabei ein konkretes Objekt "Component" oder eine Sammlung von Objekten "Container" sein. Container und Component besitzen eine gemeinsame Schnittstelle.

Decorator Pattern

Das Decotator Pattern liefert eine Möglichkeit die Funktionalität einer Klasse zu erweitern, ohne von dieser abzuleiten.

Facade Pattern

Mit dem Facade Pattern wird eine zentrale Schnittstelle zu einem System mit mehreren Objekten (Schnittstellen) geschaffen. Der Zugriff auf das System erfolgt dann über diese zentrale Schnittstelle.

Flyweight Pattern

Wenn eine Vielzahl unterschiedlicher Objekte wiederum Objekte enthalten, die in gleicher Form immer wieder referenziert werden (Flyweights), hilft das Flyweight Pattern die Anzahl der zu referenzierenden Objekte zu mindern. Die referenzierenden Objekte teilen sich dabei die "Flyweights".

Proxy Pattern

Beim Proxy Pattern wird der Zugriff auf ein Objekt über ein stellvertretendes Objekt geregelt.


Behaivioral Pattern


Chain of Responsibility

Eine Chain of Responsibility wird verwendet, wenn nicht eindeutig ist, welches Objekt eine Nachricht verarbeiten soll. Der Auslöser und der Verarbeiter einer Nachricht werden dabei entkoppelt. Es wird dabei eine Kette von Objekten durchlaufen, welche die Nachricht verarbeiten könnten. Die Nachricht wird solange weitergereicht, bis ein Objekt diese verarbeitet hat oder das Ende der Kette erreicht ist.

Command Pattern

Das Command Pattern ermöglicht die Loslösung einer Anfrage von der auszuführenden Aktion. Die Anfrage wird dabei, zumeist mit Hilfe von Parametern, an eine geeignete Aktion weitergeleitet.

Interpreter Pattern

Mit dem Interpreter Pattern wird die Grammatik einer Sprache beschrieben. Dabei wird ein Interpreter zur Verfügung gestellt, der aus Sätzen dieser Sprache Aktionen ableitet.

Iterator Pattern

Mit dem Iterator Pattern kann eine Menge von Objekten geordnet durchlaufen werden, ohne dass deren konkrete Implementierung bekannt sein muss.

Mediator Pattern

Zur Kapselung der Kommunikation von Objekten kann das Mediator Pattern eingesetzt werden. Dabei regelt die Kommunikation ein dazwischen geschaltetes Mediator (Vermittler) Objekt.

Memento Pattern

Das Memento Pattern kann angewand werden, um den internen Zustand eines Objektes zur späteren Wiederherstellung zu speichern (z. B. Undo).

Observer Pattern

Das Observer Pattern wird angewendet, wenn ein oder mehrere Objekte über eine Veränderung eines anderen Objektes informiert werden sollen, ohne das diese direkt gekoppelt sind.

State Pattern

Das State Pattern erlaubt es Objekten ihr Verhalten dem aktuellen Objektzustand anzupassen.

Strategy Pattern

Um verschiedene Algorithmen austauchbar zu gestalten, kann das Strategy Pattern zum Einsatz kommen. Es bietet eine Möglichkeit Ableitungen der einzelnen Algorithmen aus einer gemeinsamen Basisklasse zu vermeiden.

Template Pattern

Das Template Pattern kommt für Algorithmen zum Einsatz, bei denen bestimmte Elemente immer wieder auftreten. Diese Elemente werden dabei in einer abstrakten Klasse abgelegt. Die konkrete Implementierung des Algorithmus erfolgt dann in von der abstrakten Basisklasse abgeleiteten Klassen.

Visitor Pattern

Mithilfe des Visitor Patterns können die Attribute eines Objektes von den darauf auszuführenden Operationen getrennt werden. Dem Objekt, welches die Operationen zur Verfügung stellt (dem Visitor), können weitere Methoden zur Bearbeitung zur hinzugefügt werden. Das Objekt mit den Attributen muss dabei nicht verändert werden.