java命令模式
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的目录 }}?