读书人

java下令模式

发布时间: 2012-08-25 10:06:20 作者: rapoo

java命令模式

Uml图:


java下令模式

?

接收者:
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的目录      }}
?

读书人网 >编程

热点推荐