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的目录
      }
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值