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.
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.
Das "Singleton Pattern" soll sicherstellen, dass von einer Klasse nur ein einzelnes Objekt Inszanziert werden kann.
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.
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.
Das "Adapter Pattern" kommt zur Anwendung, wenn die Schnittstelle einer Klasse in die Schnittstelle einer anderen Klasse überführt werden soll.
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.
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.
Das Decotator Pattern liefert eine Möglichkeit die Funktionalität einer Klasse zu erweitern, ohne von dieser abzuleiten.
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.
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".
Beim Proxy Pattern wird der Zugriff auf ein Objekt über ein stellvertretendes Objekt geregelt.
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.
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.
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.
Mit dem Iterator Pattern kann eine Menge von Objekten geordnet durchlaufen werden, ohne dass deren konkrete Implementierung bekannt sein muss.
Zur Kapselung der Kommunikation von Objekten kann das Mediator Pattern eingesetzt werden. Dabei regelt die Kommunikation ein dazwischen geschaltetes Mediator (Vermittler) Objekt.
Das Memento Pattern kann angewand werden, um den internen Zustand eines Objektes zur späteren Wiederherstellung zu speichern (z. B. Undo).
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.
Das State Pattern erlaubt es Objekten ihr Verhalten dem aktuellen Objektzustand anzupassen.
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.
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.
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.