实验十六

[实验任务一]:多次撤销和重复的命令模式

某系统需要提供一个命令集合(注:可以使用链表,栈等集合对象实现),用于存储一系列命令对象,并通过该命令集合实现多次undo()和redo()操作,可以使用加法运算来模拟实现。

实验要求:

1. 提交类图;

2. 提交源代码;

3. 注意编程规范。

 

public abstract class AbstractCommand {
    public abstract int execute(int value);
    public abstract int undo();
}
Adder.java
public class Adder {
      private int num=0; 
      public int add(int value) {    
          num += value;    
          return num;    
      }    
}
public class CalculatorForm {
    private AbstractCommand command;
    public void setCommand(AbstractCommand command) {    
        this.command = command;    
    }
    public void compute(int value) {    
        int i = command.execute(value);
        System.out.println("操作数为" + value );
        System.out.println("执行结果为" + i);    
    }       
    public void undo() {    
        int i = command.undo();    
        System.out.println("撤销:" + i);
    }
}
public class Client {
     public static void main(String args[]) {    
            CalculatorForm form = new CalculatorForm();    
            AbstractCommand command;    
            command = new ConcreteCommand();    
            form.setCommand(command); 
            form.compute(3);    
            form.compute(4);    
            form.compute(5);    
            form.undo();  
            form.undo();
            form.undo();
        }    
}
public class ConcreteCommand extends AbstractCommand {    
      private Adder adder = new Adder();    
      private int value;   
      public int execute(int value) {    
              this.value=value;    
              return adder.add(value);    
          }        
          public int undo() {    
              return adder.add(-value);    
          }    

}

 

posted @ 2023-11-20 08:33  霍普金斯大学丁真  阅读(19)  评论(0)    收藏  举报