设计模式(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)----- 命令设计模式(升级----一个开关控制多条命令)

抖音升级青少年模式!14岁以下用户每天使用时间不超40分钟

新版macOS发布 界面重新设计 Safari浏览器有巨大升级

设计模式14命令模式

设计模式14-- 从智能音箱中学习命令模式

设计模式(14)--Command(命令模式)--行为型