Zweck: | Kapsle einen Befehl als ein Objekt. Dies ermöglicht es, Klienten mit verschiedenen Anfragen zu parametrisieren, Operationen in eine Queue zu stellen, ein Logbuch zu führen und Operationen rückgängig zu machen. |
Struktur: | ![]() Abb. 3.1 Befehl |
Teilnehmer: |
|
Anwendbarkeit: | Verwenden sie das Befehlsmuster, wenn Sie
|
Zweck: | Definiere eine 1-zu-n-Abhängigkeit zwischen Objekten, so dass die Änderung des Zustands eines Objekts dazu führt, dass alle abhängigen Objekte benachrichtigt und automatisch aktualisiert werden. |
Struktur: | ![]() Abb. 3.2 Beobachter |
Teilnehmer: |
|
Anwendbarkeit: | Verwenden sie das Beobachtermuster in jeder der folgenden Situationen:
|
Zweck: | Kapsle eine auf den Elementen einer Objektstruktur auszuführende Operation als ein Objekt. Das Besuchermuster ermöglicht es Ihnen, eine neue Operation zu definieren, ohne die Klassen der von ihr bearbeiteten Elemente zu verändern. |
Struktur: | ![]() Abb. 3.3 Besucher |
Teilnehmer: |
|
Anwendbarkeit: | Verwenden sie das Besuchermuster, wenn
|
Zweck: | Definiere für eine gegebene Sprache eine Repräsentation der Grammatik sowie einen Interpreter, der die Repräsentation nutzt, um Sätze in der Sprache zu interpretieren. |
Struktur: | ![]() Abb. 3.4 Interpreter |
Teilnehmer: |
|
Anwendbarkeit: | Verwenden sie das Interpretermuster, wenn sie eine Sprache interpretieren müssen und Sie die
Ausdrücke der Sprache als abstrakte Syntaxbäume darstellen können. Das Interpretermuster funktioniert am
Besten, wenn
|
Zweck: | Ermögliche den sequentiellen Zugriff auf die Elemente eines zusammengesetzten Objekts, ohne seine zugrundeliegende Repräsentation offenzulegen. |
Struktur: | ![]() Abb. 3.5 Interator |
Teilnehmer: |
|
Anwendbarkeit: | Verwenden Sie das Iteratormuster
|
Zweck: | Erfasse und externalisiere den internen Zustand eines Objekts, ohne seine Kapselung zu verletzen, so dass das Objekt später in diesem Zustand zurückversetzt werden kann. |
Struktur: | ![]() Abb. 3.6 Memento |
Teilnehmer: |
|
Anwendbarkeit: | Verwenden Sie das Mementomuster, wenn
|
Zweck: | Definiere das Skelett eines Algorithmus in einer Operation und delegiere einzelne Schritte an Unterklassen. Die Verwendung einer Schablonenmethode ermöglicht es Unterklassen, bestimmte Schritte eines Algorithmus zu überschreiben, ohne seine Struktur zu verändern. |
Struktur: | ![]() Abb. 3.7 Schablonenmethode |
Teilnehmer: |
|
Anwendbarkeit: | Eine Schablonenmethode sollte verwendet werden,
|
Zweck: | Definiere eine Familie von Algorithmen, kapsle jeden einzelnen und mache sie austauschbar. Das Strategiemuster ermöglicht es, den Algorithmus unabhängig von ihn nutzenden Klienten zu variieren. |
Struktur: | ![]() Abb. 3.8 Strategie |
Teilnehmer: |
|
Anwendbarkeit: | Verwenden Sie das Strategiemuster, wenn
|
Zweck: | Definiere ein Objekt, welches das Zusammenspiel einer Menge von Objekten in sich kapselt. Vermittler fördern lose Kopplung, indem sie Objekte davon abhalten, aufeinander explizit Bezug zu nehmen. Sie ermöglichen es Ihnen, das Zusammenspiel der Objekte von ihnen unabhängig zu variieren. |
Struktur: | ![]() Abb. 3.9 Vermittler |
Teilnehmer: |
|
Anwendbarkeit: | Verwenden Sie das Vermittlermuster, wenn
|
Zweck: | Ermögliche es einem Objekt, sein Verhalten zu ändern, wenn sein interner Zustand sich ändert. Es wird so aussehen, als ob das Objekt sein Klasse gewechselt hat. |
Struktur: | ![]() Abb. 3.10 Zustand |
Teilnehmer: |
|
Anwendbarkeit: | Verwenden Sie das Zustandsmuster in einem der folgenden Fälle:
|
Zweck: | Vermeide die Kopplung des Auslösers einer Anfrage mit seinem Empfänger, indem mehr als ein Objekt die Möglichkeit erhält, die Aufgabe zu erledigen. Verkette die empfangenden Objekte und leite die Anfrage an der Kette entlang, bis ein Objekt sie erledigt. |
Struktur: | ![]() Abb. 3.11 Zuständigkeitskette |
Teilnehmer: |
|
Anwendbarkeit: | Verwenden Sie eine Zustaändigkeitskette, wenn
|
Summarized by: Dipl.-Ing. (univ.) Dipl.-Ing. (FH) Ralf Isken
Only for private use.
Source: Entwurfsmuster; Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides; Addison-Wesley; 1996
1 | James O. Coplien. Advanced C++ Programming Styles and Idioms. Addison-Wesley, Reading, MA, 1992 (zurück) |
2 | William F. Opdyke und Ralph E. Johnson. Vreating abstract sperclasses by refactoring.In Proceedings of the 21st Annual Computer Science Conference (ACM CSC '93), Seite 66-73, Inianapolis, IN, Februar 1993 (zurück) |
3 | Daniel C. Halbert und Patrick D. O'Brien. Object-orientated development. IEEE Software, 4(5):71-79, September 1987. (zurück) |