Illustration einer tropischen Insel mit Palmen und einem hohen Berg

Java Blog für Programmierer

DESIGN PATTERN kompakt

· Christian Ullenboom

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

Kategorien: Allgemein

← Alle Beiträge