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
- Patterns for Java and Distributed Computing
- Design Patterns (Vince Huston)
- Cetus Links Patterns
- Croft’s Design Patterns In Java
- Industrial Logic Patterns Page
- Pattern Depot
- Portland Pattern Repository
- Wiki Wiki Web
- Design Patterns Home Page
- James Cooper’s The Design Patterns Java Companion
- Design Patterns in Java AWT
- A Catalogue of General-Purpose Design Patterns
Was ist eigentlich kein Pattern?
Bjarne Stroustrup, OOPSLA 95