Sagen wir, ich habe 4 Knöpfe und ich möchte, dass jeder eine andere Sache macht. Ich möchte keine große switch-Anweisung, bei der ich eine andere Sache mache, je nachdem, welche Taste gedrückt wurde, noch möchte ich eine separate Methode für jeden Tastenklick. Ist das Befehlsmuster ein guter Weg, dies zu lösen?Wie verwende ich das Befehlsmuster, um die Komplexität eines Menüs zu reduzieren?
Antwort
Ja, das ist eine häufige Verwendung für das Befehlsmuster. Stellen Sie sich vor, Sie haben eine Reihe von Klassen (z. B. Öffnen, Speichern, Drucken), die jeweils eine execute() -Methode zur Verfügung stellen. Sie können dann eine Instanz einer dieser Klassen mit Ihren Schaltflächen verknüpfen und das onclick-Ereignis der Schaltfläche aufrufen ausführen () ohne zu wissen, was der zugehörige Befehl konkret macht.
Die Wikipedia article gibt einige andere allgemeine Verwendungen des Befehlsmusters.
Ja. Ich habe verwendet, um die gleiche Aktion mit einem Menü-Klick und einem Toolbar-Klick zu verknüpfen. Es funktioniert ziemlich gut. Es revolutioniert nichts, aber gibt Ihnen viel saubereren Code und beseitigt unangenehme Switch-Anweisungen.
Ich habe irgendwo Code, den ich versuchen werde zu graben, um Ihnen einige Beispiele zu geben.
Aber wie man am besten die Assoziation - innerhalb der Taste (z. B. haben eine spezielle "CommandButton" -Klasse, die einen Verweis auf einen ICommand hält ... ODER außerhalb der Klasse in irgendeiner Art von Nachschlagen? – Iain