DESIGN PATTERN kompakt

Grundlegende Pattern

Schnittstellen
Interfaces

Schnittstellen definieren die Operationen einer Klasse, und schreibt Verhalten vor, welches die Objekt dann zeigen.

Delegate
Delegate

Delegiere die Arbeit an ein anderes Objekt. Erweitere die Funktionalität einer Klasse nicht durch Vererbung, sondern durch Assoziation.

Markierungsschnittstelle
Marker-Interface

Durch die Implementierung einer Schnittstellen, die keine Operationen vorschreibt, wird das Objekt markiert und bekommt somit einen Typ.

Immutable
Abstract Factory

Die Zustände eines Objekts lassen sich nicht mehr verändern. Unveränderbare Objekte.

Typsicherer Aufzählungen
Lasse Konstanten typsicher sein, dass keine Verwechselungen der Reihenfolge, und der Inhalte auftreten.

Null-Objekt
Null object

Implementiere die Schnittstelle ohne Funktionalität.

Objekt-Pool
Object Pool

Halte teuer zu erzeugende Objekte in einem Objekt-Pool.

Erzeuger-Pattern (Creational Pattern)

Abstrakte Fabrik
Abstract Factory

Stelle eine Schnittstelle bereit, um eine Familie von verwandten Objekten zu erzeugen, ohne die konkreten Klassen zu offenbaren.

Erbauer
Builder

Trenne die Erzeugung und die Repräsentation eines komplexeren Objektes, so dass sich die Konstruktion auch mit anderen Repräsentationen durchführen lasst.

Fabrikmethode
Factory Method

Stelle für die Erzeugung von Objekten eine Schnittstelle bereit, lass aber eine Fabrik entscheiden, welche Unterklassen erzeugt wird.

Prototyp
Prototype

Lege durch eine Prototyp fest, welche Objekten zu erzeugen sind und erzeuge neue Objekte als Kopie dieses Prototyps.

Singleton
Stelle sicher, dass es nur ein Exemplar eine Klasse gibt. Dieses lässt sich durch eine statische Funktion erfragen.

Struktur-Muster (Structural Pattern)

Adapter
Passe die Schnittstelle eine Klasse auf die Schnittstelle einer anderen Klasse an. So können Klassen zusammenarbeiten, die sonst wegen inkompatibler Schnittstellen nicht miteinander zusammenarbeiten könnten.

Brücke
Bridge

Löse die Abstraktion von der Implementierung, so dass beide unabhängig verändert werden können.

Kompositum
Composite

Zusammengesetzte Objekte bilden über eine Teil/Ganzes-Beziehung eine Baumstruktur. Die Blätter und Knoten sollen gleich behandelt werden können.

Dekorator
Decorator

Ein Objekt kann (auch dynamisch) weitere Verantwortlichkeiten enthalten.

Fassade
Facade

Stelle eine einfache Schnittstelle für ein komplexes System bereit. Damit wird das tiefer liegende System einfacher zu nutzen.

Fliegengewicht
Flyweight

Behandle eine große Menge kleiner Objekte effizient, in dem unveränderliche Objekte gemeinsam genutzt werden.

Proxy
Stelle einen Stellvertreter für ein Objekt bereit.

Verhaltsmuster  (Behavioral Pattern)

Verantwortungskette
Chain Of Responsibility
Gehe eine Kette von Objekten durch und frage sie, ob sie eine Anfrage annehmen. Entkopple dadurch Sender und Empfänger.

Kommando
Command
Eine Operation wird als Objekt verpackt.

Interpreter
Definiere zu einer Sprache eine Grammatik und baue einen Interpreter, der Sätze der Sprache erkennt.

Iterator
Ermögliche ein sequenzielles Ablaufen einer Datensammlung ohne die interne Repräsentation der Daten freizugeben.

Vermittler
Mediator

Entkopple Objekte, damit sie sich nicht mehr direkt kommunizieren müssen.

Memento
Speichere ohne Freigabe der inneren Struktur den internen Zustand eines Objektes um ihn später wieder Herstellen zu können.

Beobachter
Observer
Definiere eine 1:n-Beziehung zwischen Objekten, so dass bei einer Zustandsänderung die Interessenten automatisch informiert werden.

Zustand
State
Erlaube bei einer Änderung des Zustandes eine Änderung des Verhaltens.

Strategie
Strategy
Definiere für jeden Algorithmus (Strategie) eine Klasse, die dann später vom Klienten genutzt werden kann.

Schablonenmethode
Template Methode

Definierte das Skelett einer Anwendung durch eine Reihe von Operationen und verschiebe die Implementierung der Operationen auf die Unterklassen.

Besucher
Visitor
Trenne Algorithmus und Datenstruktur voneinander, sodass sich insbesondere Verhalten anpassen lässt, ohne die Klasse für die Datenstruktur anfassen zu müssen.

Links

Was ist eigentlich kein Pattern?
Bjarne Stroustrup, OOPSLA 95

Ähnliche Beiträge

Schreibe einen Kommentar

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