From 4ff196ce35df38080abfec2a4b15407eecf918bb Mon Sep 17 00:00:00 2001 From: Rakesh Venkatesh Date: Wed, 30 Sep 2020 17:56:12 +0200 Subject: [PATCH] Refactor the command pattern to use lambda functions We can leverage the lambda expressins of Java 8 onwards to implement command design pattern instead of traditional non functional way --- command/README.md | 192 +++++++---------- command/etc/command.png | Bin 77145 -> 51106 bytes command/etc/command.ucls | 201 ++++++++---------- command/etc/command.urm.puml | 41 +--- .../main/java/com/iluwatar/command/App.java | 10 +- .../java/com/iluwatar/command/Command.java | 37 ---- .../java/com/iluwatar/command/Goblin.java | 21 ++ .../iluwatar/command/InvisibilitySpell.java | 57 ----- .../com/iluwatar/command/ShrinkSpell.java | 59 ----- .../java/com/iluwatar/command/Wizard.java | 18 +- .../com/iluwatar/command/CommandTest.java | 4 +- 11 files changed, 206 insertions(+), 434 deletions(-) delete mode 100644 command/src/main/java/com/iluwatar/command/Command.java delete mode 100644 command/src/main/java/com/iluwatar/command/InvisibilitySpell.java delete mode 100644 command/src/main/java/com/iluwatar/command/ShrinkSpell.java diff --git a/command/README.md b/command/README.md index 28c7e88e9..87dd48824 100644 --- a/command/README.md +++ b/command/README.md @@ -14,14 +14,14 @@ Action, Transaction ## Intent -Encapsulate a request as an object, thereby letting you parameterize clients with different +Encapsulate a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support undoable operations. ## Explanation Real world example -> There is a wizard casting spells on a goblin. The spells are executed on the goblin one by one. -> The first spell shrinks the goblin and the second makes him invisible. Then the wizard reverses +> There is a wizard casting spells on a goblin. The spells are executed on the goblin one by one. +> The first spell shrinks the goblin and the second makes him invisible. Then the wizard reverses > the spells one by one. Each spell here is a command object that can be undone. In plain words @@ -30,8 +30,8 @@ In plain words Wikipedia says -> In object-oriented programming, the command pattern is a behavioral design pattern in which an -> object is used to encapsulate all information needed to perform an action or trigger an event at +> In object-oriented programming, the command pattern is a behavioral design pattern in which an +> object is used to encapsulate all information needed to perform an action or trigger an event at > a later time. **Programmatic Example** @@ -48,18 +48,16 @@ public class Wizard { public Wizard() {} - public void castSpell(Command command, Target target) { - LOGGER.info("{} casts {} at {}", this, command, target); - command.execute(target); - undoStack.offerLast(command); + public void castSpell(Runnable runnable) { + runnable.run(); + undoStack.offerLast(runnable); } public void undoLastSpell() { if (!undoStack.isEmpty()) { var previousSpell = undoStack.pollLast(); redoStack.offerLast(previousSpell); - LOGGER.info("{} undoes {}", this, previousSpell); - previousSpell.undo(); + previousSpell.run(); } } @@ -67,8 +65,7 @@ public class Wizard { if (!redoStack.isEmpty()) { var previousSpell = redoStack.pollLast(); undoStack.offerLast(previousSpell); - LOGGER.info("{} redoes {}", this, previousSpell); - previousSpell.redo(); + previousSpell.run(); } } @@ -79,84 +76,7 @@ public class Wizard { } ``` -Next we present the spell hierarchy. - -```java -public interface Command { - - void execute(Target target); - - void undo(); - - void redo(); - - String toString(); -} - -public class InvisibilitySpell implements Command { - - private Target target; - - @Override - public void execute(Target target) { - target.setVisibility(Visibility.INVISIBLE); - this.target = target; - } - - @Override - public void undo() { - if (target != null) { - target.setVisibility(Visibility.VISIBLE); - } - } - - @Override - public void redo() { - if (target != null) { - target.setVisibility(Visibility.INVISIBLE); - } - } - - @Override - public String toString() { - return "Invisibility spell"; - } -} - -public class ShrinkSpell implements Command { - - private Size oldSize; - private Target target; - - @Override - public void execute(Target target) { - oldSize = target.getSize(); - target.setSize(Size.SMALL); - this.target = target; - } - - @Override - public void undo() { - if (oldSize != null && target != null) { - var temp = target.getSize(); - target.setSize(oldSize); - oldSize = temp; - } - } - - @Override - public void redo() { - undo(); - } - - @Override - public String toString() { - return "Shrink spell"; - } -} -``` - -Finally, we have the goblin who's the target of the spells. +Next, we have the goblin who's the target of the spells. ```java public abstract class Target { @@ -203,33 +123,73 @@ public class Goblin extends Target { return "Goblin"; } + public void changeSize() { + var oldSize = getSize() == Size.NORMAL ? Size.SMALL : Size.NORMAL; + setSize(oldSize); + } + + public void changeVisibility() { + var visible = getVisibility() == Visibility.INVISIBLE + ? Visibility.VISIBLE : Visibility.INVISIBLE; + setVisibility(visible); + } } ``` +Finally we have the wizard in main function who casts spell + +```java +public static void main(String[] args) { + var wizard = new Wizard(); + var goblin = new Goblin(); + + // casts shrink/unshrink spell + wizard.castSpell(goblin::changeSize); + + // casts visible/invisible spell + wizard.castSpell(goblin::changeVisibility); + + // undo and redo casts + wizard.undoLastSpell(); + wizard.redoLastSpell(); +``` + Here's the whole example in action. ```java var wizard = new Wizard(); var goblin = new Goblin(); + goblin.printStatus(); -wizard.castSpell(new ShrinkSpell(), goblin); +wizard.castSpell(goblin::changeSize); goblin.printStatus(); -wizard.castSpell(new InvisibilitySpell(), goblin); + +wizard.castSpell(goblin::changeVisibility); goblin.printStatus(); + wizard.undoLastSpell(); goblin.printStatus(); + +wizard.undoLastSpell(); +goblin.printStatus(); + +wizard.redoLastSpell(); +goblin.printStatus(); + +wizard.redoLastSpell(); +goblin.printStatus(); ``` Here's the program output: ```java -// Goblin, [size=normal] [visibility=visible] -// Wizard casts Shrink spell at Goblin -// Goblin, [size=small] [visibility=visible] -// Wizard casts Invisibility spell at Goblin -// Goblin, [size=small] [visibility=invisible] -// Wizard undoes Invisibility spell -// Goblin, [size=small] [visibility=visible] +Goblin, [size=normal] [visibility=visible] +Goblin, [size=small] [visibility=visible] +Goblin, [size=small] [visibility=invisible] +Goblin, [size=small] [visibility=visible] +Goblin, [size=normal] [visibility=visible] +Goblin, [size=small] [visibility=visible] +Goblin, [size=small] [visibility=invisible] ``` ## Class diagram @@ -240,26 +200,26 @@ Here's the program output: Use the Command pattern when you want to: -* Parameterize objects by an action to perform. You can express such parameterization in a -procedural language with a callback function, that is, a function that's registered somewhere to be +* Parameterize objects by an action to perform. You can express such parameterization in a +procedural language with a callback function, that is, a function that's registered somewhere to be called at a later point. Commands are an object-oriented replacement for callbacks. -* Specify, queue, and execute requests at different times. A Command object can have a lifetime -independent of the original request. If the receiver of a request can be represented in an address -space-independent way, then you can transfer a command object for the request to a different process +* Specify, queue, and execute requests at different times. A Command object can have a lifetime +independent of the original request. If the receiver of a request can be represented in an address +space-independent way, then you can transfer a command object for the request to a different process and fulfill the request there. -* Support undo. The Command's execute operation can store state for reversing its effects in the -command itself. The Command interface must have an added un-execute operation that reverses the -effects of a previous call to execute. The executed commands are stored in a history list. -Unlimited-level undo and redo is achieved by traversing this list backwards and forwards calling +* Support undo. The Command's execute operation can store state for reversing its effects in the +command itself. The Command interface must have an added un-execute operation that reverses the +effects of a previous call to execute. The executed commands are stored in a history list. +Unlimited-level undo and redo is achieved by traversing this list backwards and forwards calling un-execute and execute, respectively. -* Support logging changes so that they can be reapplied in case of a system crash. By augmenting the -Command interface with load and store operations, you can keep a persistent log of changes. -Recovering from a crash involves reloading logged commands from disk and re-executing them with +* Support logging changes so that they can be reapplied in case of a system crash. By augmenting the +Command interface with load and store operations, you can keep a persistent log of changes. +Recovering from a crash involves reloading logged commands from disk and re-executing them with the execute operation. -* Structure a system around high-level operations build on primitive operations. Such a structure is -common in information systems that support transactions. A transaction encapsulates a set of changes -to data. The Command pattern offers a way to model transactions. Commands have a common interface, -letting you invoke all transactions the same way. The pattern also makes it easy to extend the +* Structure a system around high-level operations build on primitive operations. Such a structure is +common in information systems that support transactions. A transaction encapsulates a set of changes +to data. The Command pattern offers a way to model transactions. Commands have a common interface, +letting you invoke all transactions the same way. The pattern also makes it easy to extend the system with new transactions. ## Typical Use Case diff --git a/command/etc/command.png b/command/etc/command.png index 5564b0ec52280784242f384c1f9f4ac154772f7c..0f026464ecc4ad0218a06f388d259368f971d1d2 100644 GIT binary patch literal 51106 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 %d-|A2TNuh`Ty%@a2^Oz=yM-`RNka~xT) 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≶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 g7UzHd@d_oZjvN&;K?aomz`%$IN(kigy> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - \ No newline at end of file + diff --git a/command/etc/command.urm.puml b/command/etc/command.urm.puml index c9c172226..f85949c56 100644 --- a/command/etc/command.urm.puml +++ b/command/etc/command.urm.puml @@ -4,33 +4,11 @@ package com.iluwatar.command { + App() + main(args : String[]) {static} } - interface Command { - + Command() - + execute(Target) {abstract} - + redo() {abstract} - + toString() : String {abstract} - + undo() {abstract} - } class Goblin { + Goblin() + toString() : String - } - class InvisibilitySpell { - - target : Target - + InvisibilitySpell() - + execute(target : Target) - + redo() - + toString() : String - + undo() - } - class ShrinkSpell { - - oldSize : Size - - target : Target - + ShrinkSpell() - + execute(target : Target) - + redo() - + toString() : String - + undo() + + changeSize() + + changeVisibility() } enum Size { + NORMAL {static} @@ -62,22 +40,19 @@ package com.iluwatar.command { } class Wizard { - LOGGER : Logger {static} - - redoStack : Deque - - undoStack : Deque + - redoStack : Deque + - undoStack : Deque + Wizard() - + castSpell(command : Command, target : Target) + + castSpell(Runnable : runnable) + redoLastSpell() + toString() : String + undoLastSpell() } } Target --> "-size" Size -Wizard --> "-undoStack" Command -ShrinkSpell --> "-oldSize" Size -InvisibilitySpell --> "-target" Target -ShrinkSpell --> "-target" Target +Wizard --> "-changeSize" Goblin +Wizard --> "-changeVisibility" Goblin Target --> "-visibility" Visibility Goblin --|> Target -InvisibilitySpell ..|> Command -ShrinkSpell ..|> Command +App --> "castSpell" Wizard @enduml diff --git a/command/src/main/java/com/iluwatar/command/App.java b/command/src/main/java/com/iluwatar/command/App.java index b4e54fd97..1e4e78758 100644 --- a/command/src/main/java/com/iluwatar/command/App.java +++ b/command/src/main/java/com/iluwatar/command/App.java @@ -32,10 +32,10 @@ package com.iluwatar.command; * client. A command object (spell) knows about the receiver (target) and invokes a method of the * receiver. Values for parameters of the receiver method are stored in the command. The receiver * then does the work. An invoker object (wizard) knows how to execute a command, and optionally - * does bookkeeping about the command execution. The invoker does not know anything about a concrete - * command, it knows only about command interface. Both an invoker object and several command + * does bookkeeping about the command execution. The invoker does not know anything about a is + * executed. Both an invoker object and several command * objects are held by a client object (app). The client decides which commands to execute at which - * points. To execute a command, it passes the command object to the invoker object. + * points. To execute a command, it passes a reference of the command object to the invoker object. * *

In other words, in this example the wizard casts spells on the goblin. The wizard keeps track * of the previous spells cast, so it is easy to undo them. In addition, the wizard keeps track of @@ -54,10 +54,10 @@ public class App { goblin.printStatus(); - wizard.castSpell(new ShrinkSpell(), goblin); + wizard.castSpell(goblin::changeSize); goblin.printStatus(); - wizard.castSpell(new InvisibilitySpell(), goblin); + wizard.castSpell(goblin::changeVisibility); goblin.printStatus(); wizard.undoLastSpell(); diff --git a/command/src/main/java/com/iluwatar/command/Command.java b/command/src/main/java/com/iluwatar/command/Command.java deleted file mode 100644 index 83010f160..000000000 --- a/command/src/main/java/com/iluwatar/command/Command.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * The MIT License - * Copyright © 2014-2019 Ilkka Seppälä - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -package com.iluwatar.command; - -/** - * Interface for Commands. - */ -public interface Command { - void execute(Target target); - - void undo(); - - void redo(); - - String toString(); -} diff --git a/command/src/main/java/com/iluwatar/command/Goblin.java b/command/src/main/java/com/iluwatar/command/Goblin.java index 72ddc43b5..791bd94e3 100644 --- a/command/src/main/java/com/iluwatar/command/Goblin.java +++ b/command/src/main/java/com/iluwatar/command/Goblin.java @@ -23,11 +23,16 @@ package com.iluwatar.command; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * Goblin is the target of the spells. */ public class Goblin extends Target { + private static final Logger LOGGER = LoggerFactory.getLogger(Goblin.class); + public Goblin() { setSize(Size.NORMAL); setVisibility(Visibility.VISIBLE); @@ -38,4 +43,20 @@ public class Goblin extends Target { return "Goblin"; } + /** + * changeSize. + */ + public void changeSize() { + var oldSize = getSize() == Size.NORMAL ? Size.SMALL : Size.NORMAL; + setSize(oldSize); + } + + /** + * changeVisibility. + */ + public void changeVisibility() { + var visible = getVisibility() == Visibility.INVISIBLE + ? Visibility.VISIBLE : Visibility.INVISIBLE; + setVisibility(visible); + } } diff --git a/command/src/main/java/com/iluwatar/command/InvisibilitySpell.java b/command/src/main/java/com/iluwatar/command/InvisibilitySpell.java deleted file mode 100644 index 33e053cc2..000000000 --- a/command/src/main/java/com/iluwatar/command/InvisibilitySpell.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * The MIT License - * Copyright © 2014-2019 Ilkka Seppälä - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -package com.iluwatar.command; - -/** - * InvisibilitySpell is a concrete command. - */ -public class InvisibilitySpell implements Command { - - private Target target; - - @Override - public void execute(Target target) { - target.setVisibility(Visibility.INVISIBLE); - this.target = target; - } - - @Override - public void undo() { - if (target != null) { - target.setVisibility(Visibility.VISIBLE); - } - } - - @Override - public void redo() { - if (target != null) { - target.setVisibility(Visibility.INVISIBLE); - } - } - - @Override - public String toString() { - return "Invisibility spell"; - } -} diff --git a/command/src/main/java/com/iluwatar/command/ShrinkSpell.java b/command/src/main/java/com/iluwatar/command/ShrinkSpell.java deleted file mode 100644 index 3f21fc7c1..000000000 --- a/command/src/main/java/com/iluwatar/command/ShrinkSpell.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * The MIT License - * Copyright © 2014-2019 Ilkka Seppälä - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -package com.iluwatar.command; - -/** - * ShrinkSpell is a concrete command. - */ -public class ShrinkSpell implements Command { - - private Size oldSize; - private Target target; - - @Override - public void execute(Target target) { - oldSize = target.getSize(); - target.setSize(Size.SMALL); - this.target = target; - } - - @Override - public void undo() { - if (oldSize != null && target != null) { - var temp = target.getSize(); - target.setSize(oldSize); - oldSize = temp; - } - } - - @Override - public void redo() { - undo(); - } - - @Override - public String toString() { - return "Shrink spell"; - } -} diff --git a/command/src/main/java/com/iluwatar/command/Wizard.java b/command/src/main/java/com/iluwatar/command/Wizard.java index dd469d3c0..b4568eebf 100644 --- a/command/src/main/java/com/iluwatar/command/Wizard.java +++ b/command/src/main/java/com/iluwatar/command/Wizard.java @@ -35,20 +35,18 @@ public class Wizard { private static final Logger LOGGER = LoggerFactory.getLogger(Wizard.class); - private final Deque undoStack = new LinkedList<>(); - private final Deque redoStack = new LinkedList<>(); + private final Deque undoStack = new LinkedList<>(); + private final Deque redoStack = new LinkedList<>(); public Wizard() { - // comment to ignore sonar issue: LEVEL critical } /** * Cast spell. */ - public void castSpell(Command command, Target target) { - LOGGER.info("{} casts {} at {}", this, command, target); - command.execute(target); - undoStack.offerLast(command); + public void castSpell(Runnable runnable) { + runnable.run(); + undoStack.offerLast(runnable); } /** @@ -58,8 +56,7 @@ public class Wizard { if (!undoStack.isEmpty()) { var previousSpell = undoStack.pollLast(); redoStack.offerLast(previousSpell); - LOGGER.info("{} undoes {}", this, previousSpell); - previousSpell.undo(); + previousSpell.run(); } } @@ -70,8 +67,7 @@ public class Wizard { if (!redoStack.isEmpty()) { var previousSpell = redoStack.pollLast(); undoStack.offerLast(previousSpell); - LOGGER.info("{} redoes {}", this, previousSpell); - previousSpell.redo(); + previousSpell.run(); } } diff --git a/command/src/test/java/com/iluwatar/command/CommandTest.java b/command/src/test/java/com/iluwatar/command/CommandTest.java index 81f556010..76b8c9e58 100644 --- a/command/src/test/java/com/iluwatar/command/CommandTest.java +++ b/command/src/test/java/com/iluwatar/command/CommandTest.java @@ -56,10 +56,10 @@ public class CommandTest { var wizard = new Wizard(); var goblin = new Goblin(); - wizard.castSpell(new ShrinkSpell(), goblin); + wizard.castSpell(goblin::changeSize); verifyGoblin(goblin, GOBLIN, Size.SMALL, Visibility.VISIBLE); - wizard.castSpell(new InvisibilitySpell(), goblin); + wizard.castSpell(goblin::changeVisibility); verifyGoblin(goblin, GOBLIN, Size.SMALL, Visibility.INVISIBLE); wizard.undoLastSpell();