Real world-Beispiel für die Anwendung der Befehl Muster
Befehl Muster kann verwendet werden, um zu implementieren Transactional behavior
(und Undo
).
Aber ich konnte nicht finden ein Beispiel für diese durch googeln. Ich konnte nur einige triviale Beispiele für eine Lampe, die switched on
oder off
.
Wo finde ich ein coding-Beispiel (am besten in Java
)dieser/diese Verhaltensweisen umgesetzt, die Command Pattern
?
- Suche für jede Nutzung
Runnable
oderCallable
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In einem unserer Projekte, haben wir die folgende Voraussetzung:
Führen Sie diese in einer transaktionalen Weise, jeder Betrieb ist implementiert als ein Befehl mit undo-Funktion. Am Ende jeder Schritt, der Befehl stieß auf einen Stapel. Wenn der Vorgang fehlschlägt, ein paar Schritt, dann knallen wir die Befehle vom Stapel und rufen Sie die undo-Funktion auf jede der Befehl herausgesprungen. Die undo-Funktion in jedem Schritt definiert ist, dass das Kommando der Umsetzung Umkehrung der früheren Befehl.execute().
Hoffe, das hilft.
revert the changes made to the copy of the DB it held
.So gilt der Befehl für die erste, um eine Kopie der Daten und nicht die tatsächlichen Daten?Ich dachte, dass es direkt angewendet auf Daten, die ist, warum Sie benötigenundo
.Deine Beschreibung ist etwas klar, aber ich brauche ein wenig mehr low-level-details, wenn möglich, zu sehen, das große BildaddTask
Methode fügt hinzu, dass ein work-item zu einer internen Warteschlange von Aufgaben, die darauf warten, getan zu werden. ... Die Einträge in der Warteschlange werden command-Objekte. In der Regel werden diese Objekte implementieren ein gemeinsames interface wiejava.lang.Runnable
erlaubt, den thread-pool, um den Befehl auszuführen, obwohl die thread-pool-Klasse selbst geschrieben wurde, ohne Kenntnis der konkreten Aufgaben, für die es verwendet werden."Callable
im Gegensatz zuRunnable
in Verbindung mit einemExecutorService
. Ein ähnliches Beispiel gesehen werden kann, in der Diskussion um den Wikipedia-Artikel selbst hier.Runnable
erfüllen wird der Befehl Muster. z.B.class ExitTask implements Runnable { public void run() { System.exit(0); } }
Befehl Muster werden in einer Menge von stellen.
Hier ist eine Website, die als Beispiel der Befehl Muster für Rückruf. http://www.javaworld.com/article/2077569/core-java/java-tip-68--learn-how-to-implement-the-command-pattern-in-java.html?page=2
You have to define undo(), redo() operations along with execute() in Command interface itself
.Beispiel:
Definieren einen Zustand, in Ihrem
ConcreteCommand
Klasse. Abhängig vom aktuellen Zustand nachexecute
() - Methode, müssen Sie entscheiden, ob der Befehl Hinzugefügt werden sollUndo Stack
oderRedo Stack
und entscheidet entsprechend.Haben Sie einen Blick auf diese undo-redo Befehl Artikel zum besseren Verständnis.