Befehl:
Grundlegende Bestandteile:
- Befehl deklariert eine Schnittstelle für abstrakte Befehle wie
execute()
- Der Empfänger weiß, wie ein bestimmter Befehl ausgeführt wird
- Invoker enthält ConcreteCommand , der ausgeführt werden muss
- Der Client erstellt den ConcreteCommand und weist den Empfänger zu
- ConcreteCommand definiert die Bindung zwischen Befehl und Empfänger
Arbeitsablauf:
Client ruft Invoker => Invoker ruft ConcreteCommand => ConcreteCommand- Aufrufe auf Receiver- Methode auf, die die abstrakte Command- Methode implementiert .
Vorteil : Änderungen an Befehl und Empfänger durch den Client sind nicht betroffen. Invoker bietet eine lose Kopplung zwischen Client und Empfänger. Sie können mehrere Befehle mit demselben Invoker ausführen.
Mit dem Befehlsmuster können Sie einen Befehl auf verschiedenen Empfängern ausführen,indem Sie denselben Invoker verwenden . Invoker kennt den Empfängertyp nicht
Schauen Sie sich zum besseren Verständnis der Konzepte diesen JournalDev- Artikel von Pankaj Kumar und den dzone- Artikel an von James Sugrue zusätzlich zum Wikipedia-Link.
Sie können das Befehlsmuster verwenden , um
Entkoppeln Sie den Aufrufer und den Befehlsempfänger
Rückrufmechanismus implementieren
Implementieren Sie die Funktionen zum Rückgängigmachen und Wiederherstellen
Pflegen Sie eine Befehlsgeschichte
java.lang.Thread
ist eine gute Umsetzung von Befehlsmustern. Sie können Thread als Aufrufer und Klasse behandeln, die Runnable als ConcreteCommonad / Receiver und die run()
Methode als Befehl implementieren .
Die Version des Befehlsmusters zum Rückgängigmachen / Wiederherstellen kann im Artikel von Theodore Norvell gelesen werden
Strategie:
Das Strategiemuster ist sehr einfach zu verstehen. Verwenden Sie dieses Muster, wenn
Sie haben mehrere Implementierungen für einen Algorithmus, und die Implementierung des Algorithmus kann sich zur Laufzeit abhängig von bestimmten Bedingungen ändern .
Nehmen Sie ein Beispiel für die Tarifkomponente des Airline-Buchungssystems
Die Fluggesellschaften möchten in verschiedenen Zeiträumen unterschiedliche Tarife anbieten - Spitzen- und Nebenzeiten. An Tagen außerhalb der Hauptverkehrszeiten möchte es die Nachfrage durch attraktive Rabatte anregen.
Wichtige Erkenntnisse zum Strategiemuster :
- Es ist ein Verhaltensmuster
- Es basiert auf Delegation
- Es ändert die Eingeweide des Objekts, indem es das Methodenverhalten ändert
- Es wird verwendet, um zwischen einer Familie von Algorithmen zu wechseln
- Es ändert das Verhalten des Objekts zur Laufzeit
Verwandte Beiträge mit Codebeispielen:
Verwenden des Befehlsentwurfsmusters
Beispiel aus der Praxis für das Strategiemuster