コード例 #1
0
        public IGumballMachineState GetSoldState()
        {
            if (_soldState == null)
            {
                _soldState = new SoldState(_gumballMachine, this);
            }

            return(_soldState);
        }
コード例 #2
0
        public IGumballMachineState GetHasCoinState()
        {
            if (_hasCoinState == null)
            {
                _hasCoinState = new HasCoinState(_gumballMachine, this);
            }

            return(_hasCoinState);
        }
コード例 #3
0
        public IGumballMachineState GetNoCoinState()
        {
            if (_noCoinState == null)
            {
                _noCoinState = new NoCoinState(_gumballMachine, this);
            }

            return(_noCoinState);
        }
コード例 #4
0
        public IGumballMachineState GetStartingState()
        {
            if (_startingState == null)
            {
                _startingState = new ErrorState(_gumballMachine, this, new Exception("Starting state undefined."));
            }

            return(_startingState);
        }
コード例 #5
0
        public GumballMachine(int numGumballs)
        {
            _soldOutState    = new OutOfGumballsState(this);
            _noQuarterState  = new NoQuarterState(this);
            _hasQuarterState = new HasQuarterState(this);
            _soldState       = new GumballSoldState(this);
            _winnerState     = new GumballWinnerState(this);

            _gumballCount = numGumballs;
            _state        = _gumballCount > 0 ? _noQuarterState : _soldOutState;
        }
コード例 #6
0
        public GumballMachine(int totalGumballs)
        {
            _soldOutState    = new SoldOutState(this);
            _noQuarterState  = new NoQuarterState(this);
            _hasQuarterState = new HasQuarterState(this);
            _soldState       = new SoldState(this);
            _totalGumballs   = totalGumballs;

            if (totalGumballs > 0)
            {
                _state = _noQuarterState;
            }
            else
            {
                _state = _soldOutState;
            }
        }
コード例 #7
0
 public void EjectCoin()
 {
     _state = _state.EjectCoin();
 }
コード例 #8
0
 public void InsertCoin()
 {
     _state = _state.InsertCoin();
 }
コード例 #9
0
 public void SetState(IGumballMachineState state)
 {
     _state = state;
 }
コード例 #10
0
 internal void SetState(IGumballMachineState state)
 {
     _state = state;
 }
コード例 #11
0
 public StateFactory(GumballMachine gumballMachine, IGumballMachineState startingState)
 {
     _gumballMachine = gumballMachine;
     _startingState  = startingState;
 }
コード例 #12
0
 public IGumballMachineState GetErrorState(Exception e = null)
 {
     _errorState = new ErrorState(_gumballMachine, this, e);
     return(_errorState);
 }
コード例 #13
0
 public IGumballMachineState GetSoldOutState()
 {
     _soldOutState = new SoldOutState(_gumballMachine, this);
     return(_soldOutState);
 }
コード例 #14
0
 internal void SetNextState(IGumballMachineState nextState)
 {
     _nextState = nextState;
 }
コード例 #15
0
 public void TurnLever()
 {
     _state = _state.TurnLever();
 }
コード例 #16
0
 private void LoadNextState()
 {
     _currentState = _stateFactory.GetNextState();
 }
コード例 #17
0
 public StateFactory(GumballMachine gumballMachine)
 {
     _gumballMachine = gumballMachine;
     _startingState  = new ErrorState(_gumballMachine, this, new Exception("Starting state undefined."));
 }