Receiver类
do(){}
undo(){}
ConcreteCommand类
构造函数
public ConcreteCommand(Receiver rec){
this.rec = rec;
}
public bool do(){
return rec.do();
}
public bool undo(){
return rec.undo();
}
Invoker类undolist;
redolist;
public void doCommand(Command command){
if(command.do()){
undolist.add(command);
}
}
public void undo(){
for(Command command : undolist){
if(command.undo()){
undolist.remove(command);
redolist.add(command);
}
}
}
Client类
main{
Invoker invoker = new Invoker();
Receiver receiver = new Receiver();
Command command = new ConcreteCommand(receiver);
invoker.doCommand(command);
//
invoker.undo();
}