命令模式

实验16:命令模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 

1、理解命令模式的动机,掌握该模式的结构;

2、能够利用命令模式解决实际问题。

 

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

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

实验要求:

1. 提交类图;

 

 

 

2. 提交源代码;

 

package src;

 

public abstract class AbstractCommand {    

  public abstract int execute(int value); //声明命令执行方法execute()    

  public abstract int undo(); //声明撤销方法undo()    

}    

package src;

 

public class Adder {    

  private int num=0; //定义初始值为0    

      

 

  public int add(int value) {    

      num += value;    

      return num;    

  }    

}    

package src;

 

public class CalculatorForm {    

    private AbstractCommand command;    

        

    public void setCommand(AbstractCommand command) {    

        this.command = command;    

    }    

        

    //调用命令对象的execute()方法执行运算    

    public void compute(int value) {    

        int i = command.execute(value);    

        System.out.println("执行结果为" + i);    

    }    

        

  

    public void undo() {    

        int i = command.undo();    

        System.out.println("撤销:" + i);    

    }    

}  

package src;

 

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();

    }    

}    

package src;

 

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);    

      }    

  }    

 

3. 注意编程规范。

 

 

posted @ 2023-11-20 10:07  秃头的小白  阅读(7)  评论(0编辑  收藏  举报