Ist eine anonyme Funktion ein guter Weg, um die Befehlsmuster zu implementieren?
-
13-09-2019 - |
Frage
Ich bin ganz neu in dieses Muster ...
Lösung
Wenn Sie bekam lambdas haben, brauchen Sie nicht wirklich die Hälfte der „Design“ „Muster“ zusammen.
Fabrik? Das ist nur eine Funktion, die neuen Objekte. Besucher? Duh! Befehl? Anonyme Funktion. Dolmetscher? Funktion, die Zeichenfolge oder was auch immer kommt. Strategie? Es ist eine Funktion!
Das ist nur lambdas, Funktionen und Verschlüsse.
Also ja, können Sie anonym (oder anders genannt) Funktionen verwenden, in dem Sie den Befehl Muster verwenden würden.
Andere Tipps
Wenn Ihr Befehl nur eine Operation unterstützt, können Sie sicher eine anonyme Funktion verwenden.
Allerdings ist es nicht ungewöhnlich, für jeden Befehl mehr als eine Operation zu haben. Z.B. DoCommand / UndoCommand für Undo / Redo-Handling. Oder CanExecuteCommand / ExecuteCommand auf enabled / disable UI-Funktionen für den Befehl. Oder so etwas wie GetLocalizedCommandName. Ich würde eine Schnittstelle in diesen Fällen (statt zum Beispiel ein Tupel von anonymen Funktionen) verwenden.
Ich würde sagen, nein, auf der Basis, die eine Funktion kann nicht wirklich die Details eines Befehl kapseln, und wenn es so anonym, wie sowohl der Anrufer und Angerufenen verstehen, was es bedeutet?
(Wenn man pedantisch sein, wollte beschreibt die GoF Beschreibung des Copmmand Muster speziell die Verwendung eines Objekts die encpsulation zu tun, eine Funktion basiert implenetation preclusing, obwohl das nit-picking würde).