11.13实验16:命令模式

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

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

实验要求:

1. 提交类图;

 

 

 

2. 提交源代码;

package rjsj.no16;

 

abstract class AbstractCommand{//抽象命令

    public abstract int execute(int value);

    public abstract int undo();

    public abstract int redo();

}

 

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

    }

 

    public int redo() {

        return adder.add(+value);

    }

}

 

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("执行运算,运算结果为:" + i);

    }

 

    public void undo() {

        int i = command.undo();

        System.out.println("执行撤销,运算结果为:" + i);

    }

 

    public void redo() {

        int i = command.redo();

        System.out.println("执行重复,运算结果为:" + i);

    }

}

 

class Adder {//接收者

    private int num=0;

 

    public int add(int value) {

        num+=value;

        return num;

    }

}

 

class Client {//客户类

    public static void main(String args[]) {

        CalculatorForm form = new CalculatorForm();

        ConcreteCommand command = new ConcreteCommand();

        form.setCommand(command);

 

        form.compute(10);

        form.redo();

        form.compute(5);

        form.compute(10);

        form.undo();

 

    }

}

3. 注意编程规范。

 

 

posted @ 2024-11-18 09:02    阅读(8)  评论(0)    收藏  举报