Uml图:
接收者:
import java.io.File;
public class MakeDir {
public void createDir(String name) {
File dir = new File(name);
dir.mkdir();
}
public void deleteDir(String name) {
File file = new File(name);
file.delete();
}
}
命令接口:
public interface Command {
public abstract void excute(String name);
public abstract void undo();
}
具体命令:
import java.util.ArrayList;
public class ConcreteCommand implements Command {
ArrayList<String> dirNameList;
MakeDir makeDir;
ConcreteCommand(MakeDir makeDir) {
dirNameList = new ArrayList<String>();
this.makeDir = makeDir;
}
public void excute(String name) {
makeDir.createDir(name);
dirNameList.add(name);
}
public void undo() {
if (dirNameList.size() > 0) {
int m = dirNameList.size();
String str = dirNameList.get(m - 1);
makeDir.deleteDir(str);
dirNameList.remove(m - 1);
} else {
System.out.println("没有需要撤销的操作");
}
}
}
请求者
public class RequestMakedir {
Command command;
public void setCommand(Command command) {
this.command = command;
}
public void startExecuteCommand(String name) {
command.excute(name);
}
public void undoCommand() {
command.undo();
}
}
应用程序:
public class Application {
public static void main(String[] args) {
MakeDir makeDir =new MakeDir();//创建接收者
Command command =new ConcreteCommand(makeDir);//创建具体命令并指定接收者
RequestMakedir requestMakedir =new RequestMakedir();
requestMakedir.setCommand(command);
requestMakedir.startExecuteCommand("jiafei");//建立jiafei目录
requestMakedir.startExecuteCommand("jerry");//建立jerry目录
requestMakedir.startExecuteCommand("tom");//建立tom目录
requestMakedir.undoCommand();//删除名字是tom的目录
requestMakedir.undoCommand();//删除名字是jerry的目录
}
}