Frage

Ich bin ganz neu in dieses Muster ...

War es hilfreich?

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.

Das Problem ist, etwa 1/3 bis 1/2 von ihnen waren im Grunde decken -UPS für Mängel in C ++, die in anderen Sprachen nicht existieren. Obwohl ich nicht mehr ein großer Perl-Fan bin, muß ich die Perl-Community auf dieses ersten (oder zumindest lustigsten) gefangen zugeben. Sie wiesen darauf hin, dass viele dieser so genannten Muster waren tatsächlich eine Implementierung der funktionalen Programmierung in C ++.

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).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top