public static void Main(string[] args) { var consoleOutput = new ConsoleOutput(); var light = new DiningRoomLight(); var powerUpLight = new Func <object>(() => PowerUpLight(light)); var powerDownLight = new Func <object>(() => PowerDownLight(light)); }
public static void Main(string[] args) { var consoleOutput = new ConsoleOutput(); var light = new DiningRoomLight(); var powerUpLight = new Func <object>(() => PowerUpLight(light)); var powerDownLight = new Func <object>(() => PowerDownLight(light)); var machine = new LightSwitchStateMachine(LightSwitchState.SwitchedOff, 0, powerUpLight, powerDownLight); machine = DispatchSignalTo(machine, whenSwitchedOn: SwitchedOnSignal.DoesNothing, whenSwitchedOff: SwitchedOnSignal.PowersDownTheLight ); machine = DispatchSignalTo(machine, SwitchedOffSignal.PowersDownTheLight, SwitchedOffSignal.DoesNothing ); machine = DispatchSignalTo(machine, whenSwitchedOn: SwitchedOffSignal.PowersDownTheLight, whenSwitchedOff: SwitchedOffSignal.DoesNothing ); var whatever = ShowOutput(consoleOutput, machine.NumSwitches); }
//returning state instead of setting on context //consequences: //- always have to return state //- MoveState needs to change whether transition actually occurs public static void Main(string[] args) { var consoleOutput = new ConsoleOutput(); var light = new DiningRoomLight(); var lightSwitchStatesFactory = new LightSwitchStatesFactory(light); var lightSwitchStateMachine = CreateLightSwitchStateMachine(lightSwitchStatesFactory.SwitchedOff()); lightSwitchStateMachine.SwitchOn(); lightSwitchStateMachine.SwitchOff(); lightSwitchStateMachine.SwitchOn(); lightSwitchStateMachine.SwitchOff(); lightSwitchStateMachine.SwitchOff(); lightSwitchStateMachine.SwitchOn(); lightSwitchStateMachine.SwitchOn(); lightSwitchStateMachine.SwitchOff(); lightSwitchStateMachine.ShowSwitchesCountOn(consoleOutput); }