码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式(14)----- 命令设计模式(升级----一个命令对象执行多条命令)

时间:2018-10-04 09:23:46      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:data   说明   ati   group   comm   app   mic   好的   rgs   

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)----- 命令设计模式(升级----一个命令对象执行多条命令)

标签:data   说明   ati   group   comm   app   mic   好的   rgs   

原文地址:https://www.cnblogs.com/qingruihappy/p/9739672.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!