示例#1
0
        public static void RunRemoteControlWithUndo()
        {
            var remote         = new RemoteControlWithUndo();
            var light          = new Light();
            var lightOn        = new LightOnCommand(light);
            var lightOff       = new LightOffCommand(light);
            var stereo         = new Stereo();
            var stereoOnWithCD = new StereoOnWithCDCommand(stereo);
            var stereoOff      = new StereoOffCommand(stereo);

            remote.SetCommand(0, lightOn, lightOff);
            remote.SetCommand(1, stereoOnWithCD, stereoOff);
            System.Console.WriteLine(remote);

            remote.OnButtonWasPressed(0);
            remote.OffButtonWasPressed(0);
            remote.UndoButtonWasPressed();

            remote.OnButtonWasPressed(1);
            remote.UndoButtonWasPressed();
            remote.OffButtonWasPressed(1);
        }
示例#2
0
        static void Main(string[] args)
        {
            #region Simple remote control test
            //Light light = new Light();
            //Command lightOn = new LightOnCommand(light);

            //SimpleRemoteControl remote = new SimpleRemoteControl();
            //remote.SetCommand(lightOn);
            //remote.ButtonPressed();

            //GarageDoor door = new GarageDoor();
            //GaraDoorOpenCommand garageOpen = new GaraDoorOpenCommand(door);
            //remote.SetCommand(garageOpen);
            //remote.ButtonPressed();
            #endregion

            #region remote control
            //Light kitchenLight = new Light("kichen");
            //Light bedroomLight = new Light("bedroom");
            //Stereo parlorStereo = new Stereo("parlor");
            //Stereo washRommStereo = new Stereo("washroom");
            //GarageDoor garageDoor = new GarageDoor(string.Empty);

            //LightOnCommand kitchenLightOn = new LightOnCommand(kitchenLight);
            //LightOffCommand kitchenLightOff = new LightOffCommand(kitchenLight);
            //StereoOnWithCDCommand parlorStereoOn = new StereoOnWithCDCommand(parlorStereo);
            //StereoOffCommand parloStereoOff = new StereoOffCommand(parlorStereo);
            //GaraDoorOpenCommand garageDoorOpen = new GaraDoorOpenCommand(garageDoor);
            //GaraDoorCloseCommand garageDoorClose = new GaraDoorCloseCommand(garageDoor);

            //RemoteControl remoteControl = new RemoteControl();
            //remoteControl.SetCommand(0, kitchenLightOn, kitchenLightOff);
            //remoteControl.SetCommand(1, parlorStereoOn, parloStereoOff);
            //remoteControl.SetCommand(2, garageDoorOpen, garageDoorClose);

            //remoteControl.OnButtonWasPushed(2);
            //remoteControl.OffButtonWasPushed(2);
            //remoteControl.OnButtonWasPushed(1);
            //remoteControl.OnButtonWasPushed(0);
            //remoteControl.OffButtonWasPushed(0);
            //remoteControl.OffButtonWasPushed(1);

            //remoteControl.OnButtonWasPushed(3);
            //remoteControl.OffButtonWasPushed(4);

            #endregion

            #region remote control with undo
            //Light livintRoomLight = new Light("livingroom");
            //LightOnCommand livingRoomOn = new LightOnCommand(livintRoomLight);
            //LightOffCommand livingRommOff = new LightOffCommand(livintRoomLight);
            //RemoteControlWithUndo remoteUndo = new RemoteControlWithUndo();
            //remoteUndo.SetCommand(0, livingRoomOn, livingRommOff);
            //remoteUndo.OnButtonWasPushed(0);
            //remoteUndo.OffButtonWasPushed(0);
            //Console.WriteLine(remoteUndo.ToString());
            //remoteUndo.UndoButtonWasPushed();
            //remoteUndo.OffButtonWasPushed(0);
            //remoteUndo.OnButtonWasPushed(0);
            //Console.WriteLine(remoteUndo.ToString());
            //remoteUndo.UndoButtonWasPushed();

            #endregion

            #region remote control with multiple undo states
            //RemoteControlWithUndo remote = new RemoteControlWithUndo();
            //CeilingFan fan = new CeilingFan("livingroom");
            //CeilingFanHighSpeedCommand ceilingFanHigh = new CeilingFanHighSpeedCommand(fan);
            //CeilingFanLowSpeedCommand ceilingFanLow = new CeilingFanLowSpeedCommand(fan);
            //CeilingFanOffSpeedCommand ceilingFanOff = new CeilingFanOffSpeedCommand(fan);
            //remote.SetCommand(0, ceilingFanHigh, ceilingFanOff);
            //remote.SetCommand(1, ceilingFanLow, ceilingFanOff);

            //remote.OnButtonWasPushed(0);
            //remote.OffButtonWasPushed(0);
            //Console.WriteLine(remote.ToString());
            //remote.UndoButtonWasPushed();

            //remote.OnButtonWasPushed(1);
            //Console.WriteLine(remote.ToString());
            //remote.UndoButtonWasPushed();
            #endregion

            #region remote control with macro commands
            RemoteControlWithUndo remote                     = new RemoteControlWithUndo();
            Light                        light               = new Light("livingroom");
            Stereo                       stero               = new Stereo("livingroom");
            CeilingFan                   fan                 = new CeilingFan("livingroom");
            LightOnCommand               livingLightOn       = new LightOnCommand(light);
            StereoOnWithCDCommand        livingStereoOn      = new StereoOnWithCDCommand(stero);
            CeilingFanMediumSpeedCommand livingCeilingMedium = new CeilingFanMediumSpeedCommand(fan);
            LightOffCommand              livingLightOff      = new LightOffCommand(light);
            StereoOffCommand             livingStereoOff     = new StereoOffCommand(stero);
            CeilingFanOffSpeedCommand    livingCeilingOff    = new CeilingFanOffSpeedCommand(fan);

            Command[]    macroOnCmd  = { livingLightOn, livingStereoOn, livingCeilingMedium };
            Command[]    macroOffCmd = { livingLightOff, livingStereoOff, livingCeilingOff };
            MacroCommand macroOn     = new MacroCommand(macroOnCmd);
            MacroCommand macroOff    = new MacroCommand(macroOffCmd);

            remote.SetCommand(0, macroOn, macroOff);

            Console.WriteLine(remote.ToString());
            remote.OnButtonWasPushed(0);
            Console.WriteLine("------push macro on-----");
            remote.OffButtonWasPushed(0);
            Console.WriteLine("------push macro off----");


            #endregion

            Console.Read();
        }
        static void Main(string[] args)
        {
            var simpleRemoteControl = new SimpleRemoteControl();
            var light          = new Light("Bedroom");
            var lightOnCommand = new LightOnCommand(light);

            simpleRemoteControl.SetCommand(lightOnCommand);
            simpleRemoteControl.ButtonWasPressed();

            var door = new GarageDoor("");
            var garageDoorOpenCommand = new GarageDoorOpenCommand(door);

            simpleRemoteControl.SetCommand(garageDoorOpenCommand);
            simpleRemoteControl.ButtonWasPressed();

            Console.WriteLine();

            var livingRoomLight = new Light("Living Room");
            var kitchenLight    = new Light("Kitchen");
            var ceilingFan      = new CeilingFan("Living Room");
            var garageDoor      = new GarageDoor("");
            var stereo          = new Stereo("Living Room");

            var livingRoomLightOnCommand  = new LightOnCommand(livingRoomLight);
            var livingRoomLightOffCommand = new LightOffCommand(livingRoomLight);
            var kitchenLightOnCommand     = new LightOnCommand(kitchenLight);
            var kitchenLightOffCommand    = new LightOffCommand(kitchenLight);

            var ceilingFanOnCommand  = new CeilingFanOnCommand(ceilingFan);
            var ceilingFanOffCommand = new CeilingFanOffCommand(ceilingFan);

            var garageDoorUpCommand   = new GarageDoorOpenCommand(garageDoor);
            var garageDoorDownCommand = new GarageDoorCloseCommand(garageDoor);

            var stereoOnWithCdCommand = new StereoOnWithCdCommand(stereo);
            var stereoOffCommand      = new StereoOffCommand(stereo);

            var remote = new RemoteControl();

            remote.SetCommand(0, livingRoomLightOnCommand, livingRoomLightOffCommand);
            remote.SetCommand(1, kitchenLightOnCommand, kitchenLightOffCommand);
            remote.SetCommand(2, ceilingFanOnCommand, ceilingFanOffCommand);
            remote.SetCommand(3, stereoOnWithCdCommand, stereoOffCommand);

            Console.WriteLine(remote.ToString());
            Console.WriteLine();
            remote.OnButtonWasPushed(0);
            remote.OffButtonWasPushed(0);
            remote.OnButtonWasPushed(1);
            remote.OffButtonWasPushed(1);
            remote.OnButtonWasPushed(2);
            remote.OffButtonWasPushed(2);
            remote.OnButtonWasPushed(3);
            remote.OffButtonWasPushed(3);

            Console.WriteLine();
            Console.WriteLine("------------ Remote with Undo ------------");

            var remoteWithUndo         = new RemoteControlWithUndo();
            var sunRoomLight           = new Light("Sun Room");
            var sunRoomLightOnCommand  = new LightOnCommand(sunRoomLight);
            var sunRoomLightOffCommand = new LightOffCommand(sunRoomLight);

            remoteWithUndo.SetCommand(0, sunRoomLightOnCommand, sunRoomLightOffCommand);

            remoteWithUndo.OnButtonWasPushed(0);
            remoteWithUndo.OffButtonWasPushed(0);
            Console.WriteLine(remoteWithUndo.ToString());
            remoteWithUndo.UndoButtonWasPushed();
            remoteWithUndo.OffButtonWasPushed(0);
            remoteWithUndo.OnButtonWasPushed(0);
            Console.WriteLine(remoteWithUndo.ToString());
            remoteWithUndo.UndoButtonWasPushed();

            Console.WriteLine();
            Console.WriteLine("------------ Ceiling Fan with Undo ------------");

            remoteWithUndo = new RemoteControlWithUndo();
            var ceilingFanMediumCommand = new CeilingFanMediumCommand(ceilingFan);
            var ceilingFanHighCommand   = new CeilingFanHighCommand(ceilingFan);

            ceilingFanOffCommand = new CeilingFanOffCommand(ceilingFan);
            remoteWithUndo.SetCommand(0, ceilingFanMediumCommand, ceilingFanOffCommand);
            remoteWithUndo.SetCommand(1, ceilingFanHighCommand, ceilingFanOffCommand);

            remoteWithUndo.OnButtonWasPushed(0);
            remoteWithUndo.OffButtonWasPushed(0);
            Console.WriteLine(remoteWithUndo.ToString());
            remoteWithUndo.UndoButtonWasPushed();

            remoteWithUndo.OnButtonWasPushed(1);
            Console.WriteLine(remoteWithUndo.ToString());
            remoteWithUndo.UndoButtonWasPushed();

            Console.WriteLine();
            Console.WriteLine("------------ Party Mode (Macro Commands) ------------");
            remoteWithUndo = new RemoteControlWithUndo();
            ICommand[] partyOn       = { livingRoomLightOnCommand, stereoOnWithCdCommand, ceilingFanMediumCommand };
            ICommand[] partyOff      = { livingRoomLightOffCommand, stereoOffCommand, ceilingFanOffCommand };
            var        partyOnMacro  = new MacroCommand(partyOn);
            var        partyOffMacro = new MacroCommand(partyOff);

            remoteWithUndo.SetCommand(0, partyOnMacro, partyOffMacro);
            remoteWithUndo.OnButtonWasPushed(0);
            Console.WriteLine();
            remoteWithUndo.OffButtonWasPushed(0);

            Console.ReadLine();
        }
示例#4
0
        static void Main(string[] args)
        {
            ////////SimpleRemoteControl remote = new SimpleRemoteControl();
            ////////ligth ligth = new ligth();
            ////////GarageDoor garageDoor = new GarageDoor();
            ////////LightOnCommand ligthon = new LightOnCommand(ligth);
            ////////GarageDoorOpenCommand garageOpen= new GarageDoorOpenCommand(garageDoor);
            ////////remote.setCommand(ligthon);
            ////////remote.buttonWasPressed();

            ////////remote.setCommand(garageOpen);
            ////////remote.buttonWasPressed();

            //////RemoteControlWithUndo remoteControl = new RemoteControlWithUndo();
            //////ligth livingRoomLigth = new ligth("Living Room");
            //////ligth kitchenLight = new ligth("kitchen");
            //////GarageDoor garageDoor = new GarageDoor();
            //////stereo stereo = new stereo("Living Room");

            //////LightOnCommand livingRoomLigthOn = new LightOnCommand(livingRoomLigth);
            //////LightOffCommand livingRoomLigthOff = new LightOffCommand(livingRoomLigth);
            //////LightOnCommand KitchenLigthOn = new LightOnCommand(kitchenLight);
            //////LightOffCommand KitchenLigthOff = new LightOffCommand(kitchenLight);

            //////GarageDoorOpenCommand garageDoorUp = new GarageDoorOpenCommand(garageDoor);
            //////GarageDoorDownCommand garageDoorDown = new GarageDoorDownCommand(garageDoor);

            //////StereoOnWithCDCommand stereoOnWithCD = new StereoOnWithCDCommand(stereo);
            //////StereoOffCommand stereoOff = new StereoOffCommand(stereo);

            //////remoteControl.setCommand(0, livingRoomLigthOn, livingRoomLigthOff);
            //////remoteControl.setCommand(1, KitchenLigthOn, KitchenLigthOff);
            //////remoteControl.setCommand(2, stereoOnWithCD, stereoOff);

            //////Console.WriteLine(remoteControl.toString());

            //////remoteControl.onButtonWasPushed(0);
            //////remoteControl.offButtonWasPushed(0);
            //////remoteControl.onButtonWasPushed(1);
            //////remoteControl.offButtonWasPushed(1);
            //////remoteControl.onButtonWasPushed(2);
            //////remoteControl.offButtonWasPushed(2);
            //////Console.ReadLine();

            ////RemoteControlWithUndo remoteControl = new RemoteControlWithUndo();
            ////ligth livingRoomLigth = new ligth("Living Room");

            ////LightOnCommand livingRoomLigthOn = new LightOnCommand(livingRoomLigth);
            ////LightOffCommand livingRoomLigthOff = new LightOffCommand(livingRoomLigth);

            ////remoteControl.setCommand(0, livingRoomLigthOn, livingRoomLigthOff);
            ////remoteControl.onButtonWasPushed(0);
            ////remoteControl.offButtonWasPushed(0);
            ////Console.WriteLine(remoteControl.toString());
            ////remoteControl.undoButtonWasPushed();
            ////remoteControl.offButtonWasPushed(0);
            ////remoteControl.onButtonWasPushed(0);
            ////Console.WriteLine(remoteControl.toString());
            ////remoteControl.undoButtonWasPushed();
            ////Console.ReadLine();
            //RemoteControlWithUndo remoteControl = new RemoteControlWithUndo();

            //CeilingFan ceilingFan = new CeilingFan("Living Room");

            //CeilingFanMediumCommand ceilingFanMedium = new CeilingFanMediumCommand(ceilingFan);
            //CeilingFanHighCommand ceilingFanHigh = new CeilingFanHighCommand(ceilingFan);
            //CeilingFanOffCommand ceilingFanOff = new CeilingFanOffCommand(ceilingFan);

            //remoteControl.setCommand(0, ceilingFanMedium, ceilingFanOff);
            //remoteControl.setCommand(1, ceilingFanHigh, ceilingFanOff);

            //remoteControl.onButtonWasPushed(0);
            //remoteControl.offButtonWasPushed(0);
            //Console.WriteLine(remoteControl.toString());
            //remoteControl.undoButtonWasPushed();

            //remoteControl.onButtonWasPushed(1);
            //Console.WriteLine(remoteControl.toString());
            //remoteControl.undoButtonWasPushed();
            //Console.ReadLine();

            ligth light = new ligth("Living Room");
            stereo stereo = new stereo("Living Room");
            CeilingFan ceilingfan = new CeilingFan("living room");

            LightOnCommand ligthOn = new LightOnCommand(light);
            StereoOnWithCDCommand stereoOn = new StereoOnWithCDCommand(stereo);
            CeilingFanHighCommand CeilingfanOn = new CeilingFanHighCommand(ceilingfan);
            LightOffCommand ligthOff = new LightOffCommand(light);
            StereoOffCommand stereoOff = new StereoOffCommand(stereo);
            CeilingFanOffCommand CeilingfanOff = new CeilingFanOffCommand(ceilingfan);

            command[] partyOn ={ligthOn,stereoOn,CeilingfanOn};
            command[] partyOff = { ligthOff, stereoOff, CeilingfanOff };

            MacroCommand partyOnMacro = new MacroCommand(partyOn);
            MacroCommand PartyOffMacro = new MacroCommand(partyOff);

            RemoteControlWithUndo remotecontrol = new RemoteControlWithUndo();

            remotecontrol.setCommand(0, partyOnMacro, PartyOffMacro);
            Console.WriteLine(remotecontrol.toString());
            Console.WriteLine("===Pushing Macro On ===");
            remotecontrol.onButtonWasPushed(0);
            Console.WriteLine("===Pushing Macro Off ===");
            remotecontrol.offButtonWasPushed(0);
            Console.WriteLine("===Pushing Macro undo ===");
            remotecontrol.undoButtonWasPushed();
            Console.ReadLine();
        }
示例#5
0
        static void Main(string[] args)
        {
            Console.WriteLine("-----------SimpleRemoteControl-------------");
            SimpleRemoteControl remote = new SimpleRemoteControl();
            Light          light       = new Light("Light");
            LightOnCommand lightOn     = new LightOnCommand(light);

            remote.setCommand(lightOn);
            remote.buttonWasPressed();

            Console.WriteLine("");

            RemoteControl remotControl = new RemoteControl();

            Light  livingRoomLight = new Light("Living Room");
            Light  kitchenLight    = new Light("Kitchen");
            Stereo stereo          = new Stereo("Living Room");

            LightOnCommand  livingRoomLightOn  = new LightOnCommand(livingRoomLight);
            LightOffCommand livingRoomLightOff = new LightOffCommand(livingRoomLight);

            LightOnCommand  kitchenLightOn  = new LightOnCommand(kitchenLight);
            LightOffCommand kitchenLightOff = new LightOffCommand(kitchenLight);

            StereoOnWithCDCommand StereoOnWithCDCommand = new StereoOnWithCDCommand(stereo);
            StereoOffCommand      StereoOffCommand      = new StereoOffCommand(stereo);

            remotControl.setCommand(0, livingRoomLightOn, livingRoomLightOff);
            remotControl.setCommand(1, kitchenLightOn, kitchenLightOff);
            remotControl.setCommand(2, StereoOnWithCDCommand, StereoOffCommand);

            Console.WriteLine(remotControl.toString());

            remotControl.onButtonWasPushed(0);
            remotControl.offButtonWasPushed(0);
            remotControl.onButtonWasPushed(1);
            remotControl.offButtonWasPushed(1);
            remotControl.onButtonWasPushed(2);
            remotControl.offButtonWasPushed(2);


            Console.WriteLine("");

            RemoteControlWithUndo undoRemotControl = new RemoteControlWithUndo();

            Light livingRoomUndoLight = new Light("Living Room");

            LightOnCommand  livingRoomUndoLightOn  = new LightOnCommand(livingRoomUndoLight);
            LightOffCommand livingRoomUndoLightOff = new LightOffCommand(livingRoomUndoLight);

            undoRemotControl.setCommand(0, livingRoomUndoLightOn, livingRoomUndoLightOff);

            undoRemotControl.onButtonWasPushed(0);
            undoRemotControl.offButtonWasPushed(0);
            Console.WriteLine(undoRemotControl.toString());

            undoRemotControl.undoButtonWasPushed();
            undoRemotControl.onButtonWasPushed(0);
            undoRemotControl.offButtonWasPushed(0);
            Console.WriteLine(undoRemotControl.toString());

            undoRemotControl.undoButtonWasPushed();
        }