设计模式(14)----- 命令设计模式(升级----一个命令对象执行多条命令)
Posted qingruihappy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式(14)----- 命令设计模式(升级----一个命令对象执行多条命令)相关的知识,希望对你有一定的参考价值。
MacroCommand
public class MacroCommand implements Command {
Command[] commands;
public MacroCommand(Command[] commands) {
this.commands = commands;
}
public void execute() {
for (int i = 0; i < commands.length; i++) {
commands[i].execute();
}
}
public void undo() {
for (int i = 0; i < commands.length; i++) {
commands[i].undo();
}
}
}
MacroCommand最主要的就是这个宏命令,是命令的集合 test
/**
*
- @author qingruihappy
- @data 2018年9月29日 上午12:30:57
- @说明:
- 其实这个就是把命令指令对象在进行了一层封装,并把封装好的命令指令传给了一个数组的命令指令对象(MacroCommand)
- 把这个命令指令对象数组作为参数传递给了开关,开关调用excute方法的时候就会去命令指令对象数组(MacroCommand)
- 中调用excute方法,在命令指令对象数组中在进行便利,在去调用具体的命令指令对象中的 excute方法。
- 注意理解这种思想。
*/
public class Test {
public static void main(String[] args) {
RemoteControl remoteControl = new RemoteControl();
Light light = new Light("Living Room");
TV tv = new TV("Living Room");
|
| Stereo stereo = new Stereo("Living Room"); Hottub hottub = new Hottub(); LightOnCommand lightOn = new LightOnCommand(light); StereoOnCommand stereoOn = new StereoOnCommand(stereo); TVOnCommand tvOn = new TVOnCommand(tv); HottubOnCommand hottubOn = new HottubOnCommand(hottub); LightOffCommand lightOff = new LightOffCommand(light); StereoOffCommand stereoOff = new StereoOffCommand(stereo); TVOffCommand tvOff = new TVOffCommand(tv); HottubOffCommand hottubOff = new HottubOffCommand(hottub); Command[] partyOn = { lightOn, stereoOn, tvOn, hottubOn }; Command[] partyOff = { lightOff, stereoOff, tvOff, hottubOff }; MacroCommand partyOnMacro = new MacroCommand(partyOn); MacroCommand partyOffMacro = new MacroCommand(partyOff); remoteControl.setCommand(0, partyOnMacro, partyOffMacro); System.out.println(remoteControl); System.out.println("--- Pushing Macro On---"); remoteControl.onButtonWasPushed(0); System.out.println("--- Pushing Macro Off---"); remoteControl.offButtonWasPushed(0); |
} | } |
Command[] partyOn = { lightOn, stereoOn, tvOn, hottubOn };
Command[] partyOff = { lightOff, stereoOff, tvOff, hottubOff };
MacroCommand partyOnMacro = new MacroCommand(partyOn); MacroCommand partyOffMacro = new MacroCommand(partyOff);
关键就是这几个命令
kk
以上是关于设计模式(14)----- 命令设计模式(升级----一个命令对象执行多条命令)的主要内容,如果未能解决你的问题,请参考以下文章
设计模式(12)----- 命令设计模式(升级----一个开关控制多条命令)