Command pattern可用于实施Transactional behavior
(和Undo
)
但我通过谷歌搜索找不到这些例子。我只能找到一些switched on
或off
灯的简单例子
我在哪里可以找到使用Java
实现的/这些行为的编码示例(最好在Command Pattern
中)?
答案 0 :(得分:13)
在我们的一个项目中,我们有以下要求:
要以事务方式执行此操作,每个操作都实现为具有撤消操作的命令。在每个步骤结束时,命令被压入堆栈。如果操作在某个步骤失败,那么我们从堆栈弹出命令并在弹出的每个命令上调用undo操作。每个步骤的撤消操作都在该命令实现中定义,以反转先前的command.execute()。
希望这有帮助。
答案 1 :(得分:2)
public final class Ping implements Callable<Boolean> {
private final InetAddress peer;
public Ping(final InetAddress peer) {
this.peer = peer;
}
public Boolean call() {
/* do the ping */
...
}
}
...
final Future<Boolean> result
= executorService.submit(new Ping(InetAddress.getByName("google.com")));
System.out.println("google.com is " + (result.get() ? "UP" : "DOWN"));
答案 2 :(得分:2)
命令模式在很多地方使用。
这是一个站点,它提供了用于回调的命令模式的示例。 http://www.javaworld.com/article/2077569/core-java/java-tip-68--learn-how-to-implement-the-command-pattern-in-java.html?page=2
答案 3 :(得分:0)
You have to define undo(), redo() operations along with execute() in Command interface itself
。
示例:
interface ChangeI {
enum State{ READY, DONE, UNDONE, STUCK } ;
State getState() ;
void execute() ;
void undo() ;
void redo() ;
}
在ConcreteCommand
课程中定义一个州。根据{{1}}()方法之后的当前状态,您必须决定是否应将命令添加到execute
或Undo Stack
并相应地做出决定。
Redo Stack
请查看此undo-redo命令文章,以便更好地理解。