Command - Koll3g/DesignPatterns GitHub Wiki
Problem:
Das erweitern von von Button- Funtkionen kann sich leicht mit Subklassen abgebilded werden. Sobald aber weitere Funktionen wie z.B ShortCuts oder Kontextmenüs implementieren, müsste die viele Klassen dupliziert werden oder Menüs von Schaltflächen abhängig machen was noch schlechter ist.
Lösung:
Ermöglicht das Kapseln von Aktionen in Objekten. Die Schlüsselidee hinter diesem Muster besteht darin, die Mittel bereitzustellen, um den Client vom Empfänger zu entkoppeln.
UML Diagram:
Vorteile:
- Grundsatz der Einzelverantwortung . Sie können Klassen, die Operationen aufrufen, von Klassen entkoppeln, die diese Operationen ausführen.
- Open/Closed-Prinzip . Sie können neue Befehle in die App einführen, ohne bestehenden Client-Code zu beschädigen.
- Sie können Undo/Redo implementieren.
- Sie können die verzögerte Ausführung von Operationen implementieren.
- Sie können einen Satz einfacher Befehle zu einem komplexen zusammenfügen.
Nachteile:
- Der Code kann komplizierter werden, da Sie eine ganz neue Schicht zwischen Sendern und Empfängern einführen.
- TestCode, Prod-Code