Esempio n. 1
0
 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));
 }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        //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);
        }