public static void Main(string[] arguments) { string argument; ISwitchable lamp = new Light(); ICommand switchClose = new CloseSwitchCommand(lamp); ICommand switchOpen = new OpenSwitchCommand(lamp); var switchAction = new Switch(switchClose, switchOpen); while (!string.IsNullOrEmpty(argument = Console.ReadLine())) { switch (argument) { case "ON": switchAction.Open(); break; case "OFF": switchAction.Close(); break; default: Console.WriteLine("Argument \"ON\" or \"OFF\" is required."); break; } } Console.ReadKey(); }
static void Main(string[] args) { ISwitchable lamp = new Light(); ICommand switchClose = new CloseSwitchCommand(lamp); ICommand switchOpen = new OpenSwitchCommand(lamp); var remoteControl = new Switch(switchClose, switchOpen); remoteControl.OpenLight(); remoteControl.CloseLight(); }
private static void SwitchExample() { ISwitchable lamp = new Light(); // Pass reference to the lamp instance to each command ICommand switchClose = new CloseSwitchCommand(lamp); ICommand switchOpen = new OpenSwitchCommand(lamp); // Pass reference to instances of the Command objects to the switch var @switch = new Switch(); Console.Write("Please enter the number of commands: "); var numberOfCommands = int.Parse(Console.ReadLine()); for (int i = 0; i < numberOfCommands; i++) { Console.Write("Please enter command (OPEN or CLOSE): "); var arg = Console.ReadLine(); // OPEN or CLOSE if (arg == "OPEN") { // Switch (the Invoker) will invoke Execute() (the Command) on the command object @switch.StoreAndExecute(switchOpen); } else if (arg == "CLOSE") { // Switch (the Invoker) will invoke the Execute() (the Command) on the command object @switch.StoreAndExecute(switchClose); } else { Console.WriteLine("Argument \"OPEN\" or \"CLOSE\" is required."); } } Console.WriteLine("Undoing commands..."); foreach (ICommand command in @switch.History) { command.UnExecute(); } }