示例#1
0
 public StereoOnWithCDCommand(Stereo stereo)
 {
     _stereo = stereo;
 }
        private static void DoWork()
        {
            RemoteControl remote = new RemoteControl();

            Light      light      = new Light();
            GarageDoor garageDoor = new GarageDoor("Bedroom");
            Stereo     stereo     = new Stereo("Living Room");
            CeilingFan ceilingFan = new CeilingFan("Dining Room");


            LightOnCommand        lightOn        = new LightOnCommand(light);
            LightOffCommand       lightOff       = new LightOffCommand(light);
            GarageDoorUpCommand   garageDoorUp   = new GarageDoorUpCommand(garageDoor);
            GarageDoorDownCommand garageDoorDown = new GarageDoorDownCommand(garageDoor);
            StereoOnWithCDCommand stereoOnWithCD = new StereoOnWithCDCommand(stereo);
            StereoOffCommand      stereoOff      = new StereoOffCommand(stereo);
            CeilingFanOffCommand  ceilingFanOff  = new CeilingFanOffCommand(ceilingFan);
            CeilingFanLowCommand  ceilingFanLow  = new CeilingFanLowCommand(ceilingFan);
            CeilingFanHighCommand ceilingFanHigh = new CeilingFanHighCommand(ceilingFan);

            ICommand[]   partyOn       = { lightOn, stereoOnWithCD, garageDoorUp, ceilingFanHigh };
            ICommand[]   partyOff      = { lightOff, stereoOff, garageDoorDown, ceilingFanOff };
            MacroCommand partyOnMacro  = new MacroCommand(partyOn);
            MacroCommand partyOffMacro = new MacroCommand(partyOff);

            remote.SetCommand(0, lightOn, lightOff);
            remote.SetCommand(1, garageDoorUp, garageDoorDown);
            remote.SetCommand(2, stereoOnWithCD, stereoOff);
            remote.SetCommand(3, ceilingFanLow, ceilingFanOff);
            remote.SetCommand(4, ceilingFanHigh, ceilingFanOff);
            remote.SetCommand(5, partyOnMacro, partyOffMacro);

            Console.WriteLine(remote);

            Console.WriteLine("Light");
            remote.OnButtonWasPushed(0);
            remote.OffButtonWasPushed(0);
            Console.WriteLine("Undo Button Pressed");
            remote.UndoButtonWasPushed();
            Console.WriteLine();

            Console.WriteLine("Garage Door");
            remote.OnButtonWasPushed(1);
            remote.OffButtonWasPushed(1);
            Console.WriteLine("Undo Button Pressed");
            remote.UndoButtonWasPushed();
            Console.WriteLine();

            Console.WriteLine("Stereo");
            remote.OnButtonWasPushed(2);
            remote.OffButtonWasPushed(2);
            Console.WriteLine("Undo Button Pressed");
            remote.UndoButtonWasPushed();
            Console.WriteLine();

            Console.WriteLine("Ceiling Fan");
            remote.OnButtonWasPushed(3);
            remote.OnButtonWasPushed(4);
            Console.WriteLine("Undo Button Pressed");
            remote.UndoButtonWasPushed();
            remote.OffButtonWasPushed(3);
            remote.OffButtonWasPushed(4);
        }
 public StereoOffCommand(Stereo stereo)
 {
     _stereo = stereo;
 }