实验16:命令模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解命令模式的动机,掌握该模式的结构;
2、能够利用命令模式解决实际问题。
[实验任务一]:多次撤销和重复的命令模式
某系统需要提供一个命令集合(注:可以使用链表,栈等集合对象实现),用于存储一系列命令对象,并通过该命令集合实现多次undo()和redo()操作,可以使用加法运算来模拟实现。
实验要求:
1、类图
2、源代码
①、Adder.java
package org.example.shiyanshiliu;
public class Adder {
private int num=0;
public int add(int value){
num+=value;
return num;
}
}
②、AddCommand.java
package org.example.shiyanshiliu;
public class AddCommand 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);
}
}
③、AbstractCommand.java
package org.example.shiyanshiliu;
public abstract class AbstractCommand {
public abstract int execute(int value);
public abstract int undo();
}
④、CalculatorForm.java
package org.example.shiyanshiliu;
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("执行结果为"+i);
}
public void undo(){
int i=command.undo();
System.out.println("撤销:"+i);
}
}
⑤、Client.java
package org.example.shiyanshiliu;
public class Client {
public static void main(String[] args) {
CalculatorForm form=new CalculatorForm();
AbstractCommand command;
command=new AddCommand();
form.setCommand(command);
form.compute(3);
form.compute(4);
form.compute(5);
form.undo();
form.undo();
form.undo();
}
}
3、运行结果
标签:form,int,11.15,value,command,undo,public From: https://www.cnblogs.com/zzqq1314/p/18545052