17. Kapseln Sie das, was variiert Ziehen Sie die Komposition der Vererbung vor Programmieren Sie auf eine Schnittstelle, nicht auf eine Implementierung
22. Kapseln Sie das, was variiert Ziehen Sie die Komposition der Vererbung vor Programmieren Sie auf eine Schnittstelle, nicht auf eine Implementierung Streben Sie für Objekte, die interagieren, nach Entwürfen mit lockerer Bindung
27. Kapseln Sie das, was variiert Ziehen Sie die Komposition der Vererbung vor Programmieren Sie auf eine Schnittstelle, nicht auf eine Implementierung Streben Sie für Objekte, die interagieren, nach Entwürfen mit lockerer Bindung Klassen sollten für Erweiterungen offen, aber für Veränderung geschlossen sein.
33. Kapseln Sie das, was variiert Ziehen Sie die Komposition der Vererbung vor Programmieren Sie auf eine Schnittstelle, nicht auf eine Implementierung Streben Sie für Objekte, die interagieren, nach Entwürfen mit lockerer Bindung Klassen sollten für Erweiterungen offen, aber für Veränderung geschlossen sein. Stützen Sie sich auf Abstraktionen. Stützen Sie sich nicht auf konkrete Klassen
66. Kapseln Sie das, was variiert Ziehen Sie die Komposition der Vererbung vor Programmieren Sie auf eine Schnittstelle, nicht auf eine Implementierung Streben Sie für Objekte, die interagieren, nach Entwürfen mit lockerer Bindung Klassen sollten für Ertweiterungen offen, aber für Verönderung geschlossen sein. Stützen Sie sich auf Abstraktionen. Stützen Sie sich nicht auf konkrete Klassen Sprechen Sie nur mit Ihren Freunden
67.
68.
69.
70. Kapseln Sie das, was variiert Ziehen Sie die Komposition der Vererbung vor Programmieren Sie auf eine Schnittstelle, nicht auf eine Implementierung Streben Sie für Objekte, die interagieren, nach Entwürfen mit lockerer Bindung Klassen sollten für Ertweiterungen offen, aber für Verönderung geschlossen sein. Stützen Sie sich auf Abstraktionen. Stützen Sie sich nicht auf konkrete Klassen Sprechen Sie nur mit Ihren Freunden Versuchen Sie nicht uns anzurufen, wir rufen Sie an
71.
72.
73.
74.
75. Kapseln Sie das, was variiert Ziehen Sie die Komposition der Vererbung vor Programmieren Sie auf eine Schnittstelle, nicht auf eine Implementierung Streben Sie für Objekte, die interagieren, nach Entwürfen mit lockerer Bindung Klassen sollten für Ertweiterungen offen, aber für Verönderung geschlossen sein. Stützen Sie sich auf Abstraktionen. Stützen Sie sich nicht auf konkrete Klassen Sprechen Sie nur mit Ihren Freunden Versuchen Sie nicht uns anzurufen, wir rufen Sie an Eine Klasse sollte nur einen Grund haben, sich zu ändern
Vorteile Auslösender und Ausführender sind entkoppelt. Befehlsobjekte können wie andere Objekte auch manipuliert werden. (Verändern, Filtern, Zwischenspeichern, ... ) Befehlsobjekte können zu komplexen Befehlen kombiniert werden ( Makros , realisiert als Kompositum ) Nachteile Es wird für jedes Kommando eine neue Klasse benötigt. Dies kann sehr schnell zu einer großen Menge von Klassen führen. Beispiel Ein gutes Beispiel für das Befehlsmuster, ist die Verknüpfung von GUI -Elementen, wie Schaltflächen oder Menüpunkten , mit den entsprechenden Aktionen: Konkrete Befehle realisieren dann Aktionen wie Datei öffnen , Rückgängig oder Schreibmarke nach rechts Klienten sind die Applikation oder Dialoge. Aufrufer sind Schaltflächen, Menüpunkte oder Hotkeys . Empfänger sind die Applikation ( Datei öffnen ) oder das Dokument ( Rückgängig , Einfügemarke nach rechts )