Ich bin ziemlich neu zu diesem Muster ...Ist eine anonyme Funktion eine gute Möglichkeit, das Befehlsmuster zu implementieren?
Antwort
Wenn Sie Lambdas haben, brauchen Sie nicht wirklich die Hälfte der "Design" "Muster" insgesamt.
Fabrik? Das ist nur eine Funktion, die neue Objekte zurückgibt. Besucher? Duh! Befehl? Anonyme Funktion. Dolmetscher? Funktion, die String oder was auch immer nimmt. Strategie? Es ist eine Funktion!
Das sind 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.
Ich würde nein sagen, auf der Grundlage, dass eine Funktion die Details eines Befehls nicht wirklich einkapseln kann, und wenn es als anonym ist, wie können sowohl der Anrufer als auch der Angerufene verstehen, was es darstellt?
(Wenn man pedantisch sein wollte, beschreibt die GoF-Beschreibung des Copmmand-Musters spezifisch die Verwendung eines Objekts, um die Einbettung durchzuführen, was eine funktionsbasierte Implementierung vorbereitete, obwohl dies nick-picking wäre).
Kannst du das genauer erklären? Welche Details können nicht gekapselt werden? – Iain
Wenn Ihr Befehl nur eine Operation unterstützt, können Sie eine anonyme Funktion verwenden.
Es ist jedoch nicht ungewöhnlich, dass für jeden Befehl mehr als eine Operation ausgeführt wird. Z.B. DoCommand/UndoCommand für Rückgängig/Redo-Behandlung. Oder CanExecuteCommand/ExecuteCommand zum Aktivieren/Deaktivieren von UI-Funktionen für den Befehl. Oder etwas wie GetLocalizedCommandName. Ich würde in diesen Fällen eine Schnittstelle verwenden (anstatt beispielsweise ein Tupel anonymer Funktionen).
- 1. Ist dies eine gute Möglichkeit, das asynchrone Programmiermodell zu implementieren?
- 2. Was ist eine korrekte und gute Möglichkeit, __hash __() zu implementieren?
- 3. Was ist eine gute Möglichkeit, HCI in OpenGL zu implementieren?
- 4. Eine gute Möglichkeit, verwendbare Callbacks in C++ zu implementieren
- 5. array_walk eine anonyme Funktion
- 6. Implementieren einer "LazyProperty" -Klasse - ist das eine gute Idee?
- 7. Ist dies eine gute Möglichkeit, Systemaufrufe abzufangen?
- 8. Eine Möglichkeit, anonyme Funktionen zu überprüfen?
- 9. Ist es eine gute Praxis, Logik in Eigenschaften zu implementieren
- 10. Schwierigkeiten zu verstehen, eine anonyme Funktion
- 11. Ist dies eine legale Möglichkeit, unreine virtuelle Funktionen zu implementieren?
- 12. Was ist eine gute Möglichkeit, Ereignisse in der passiven Ansicht zu implementieren?
- 13. was ist eine gute Möglichkeit, letzten Verzeichnis zu entfernen
- 14. Was ist eine gute Möglichkeit, einen Vektor * vorübergehend * zu sortieren?
- 15. MD5 ist eine gute Möglichkeit, einen Kontobestätigungscode zu erstellen
- 16. Was ist eine gute Möglichkeit, umrissene Schriften zu rendern?
- 17. Was ist eine gute Möglichkeit, Protokolle zu formatieren?
- 18. Ist Configuration.GenerateSchemaUpdateScript() in NHibernate eine gute Möglichkeit, Datenbankschemaänderungen zu verwalten
- 19. Was ist eine gute Möglichkeit, Strings hier zu teilen?
- 20. Was ist eine gute Möglichkeit, Django-Apps zu verpacken?
- 21. Ist es eine gute Möglichkeit zu verhindern, ConcurrentModificationException
- 22. Was ist eine gute Möglichkeit, eine Perl-Anwendung bereitzustellen?
- 23. Was ist eine gute Möglichkeit, Sub/Pub zu dokumentieren?
- 24. Ist SHA256 eine gute Möglichkeit, Passwörter zu speichern? (in py3)
- 25. Was ist eine gute Möglichkeit, Postfix zu verwalten?
- 26. Eine gute Möglichkeit, eine jQuery-Funktion zu schreiben, die eine globale Variable für bestimmte Ereignisse festlegt?
- 27. Kann eine anonyme C# -Klasse eine Schnittstelle implementieren?
- 28. Gibt es eine allgemeine Möglichkeit, eine ConfirmIfDirty-Funktion für eine Webseite zu implementieren?
- 29. Ist das eine gute Beschreibung von Unicode?
- 30. Was ist eine gute Möglichkeit, Bereiche auf einer Nummernleitung einzurichten?
Was ist der Unterschied zwischen einer Lambda und einer anonymen Funktion? – Iain
Sie sind Synonyme, denke ich. – alamar
Nein, es gibt kleine Unterschiede - http://blogs.msdn.com/ericlippert/archive/2007/01/10/lambda-expressions-vs-anonymous-methods-part-one.aspx –