// Выдаем два шарика public void Dispense() { gumballMachine.ReleaseBall(); if (gumballMachine.GetCount() == 0) { gumballMachine.SetState(gumballMachine.GetSoldOutState()); } // Если в автомате есть второй шарик, освобождаем его else { Console.WriteLine("YOU'RE A WINNER! You got two gumballs for your quarter"); gumballMachine.ReleaseBall(); if (gumballMachine.GetCount() > 0) { gumballMachine.SetState(gumballMachine.GetNoQuarterState()); } else { Console.WriteLine("Oops, out of gumballs!"); gumballMachine.SetState(gumballMachine.GetSoldOutState()); } } }
public void Dispense() { gumballMachine.ReleaseBall(); if (gumballMachine.GetCount() > 0) { gumballMachine.SetState(gumballMachine.GetNoQuarterState()); } else { Console.WriteLine("Oops, out of gumballs!"); gumballMachine.SetState(gumballMachine.GetSoldOutState()); } }
// Классы ConcreteState обрабатывают запросы от Context. Каждый класс предоставляет собственную реализацию запроса. Таким образои, // при переходе объекта Context в другое состояние изменяется и его поведение. public void InsertQuarter() { Console.WriteLine("You inserted a quarter"); gumballMachine.SetState(gumballMachine.GetHasQuarterState()); }
public void EjectQuarter() { Console.WriteLine("Quarter returned"); gumballMachine.SetState(gumballMachine.GetNoQuarterState()); }