// Project: Patterns2 // Module: gumball // Source code file: GumballMachine.java // Use the State pattern to implement // the states of a gumball machine. package gumball; public class GumballMachine { State soldOutState; State noQuarterState; State hasQuarterState; State soldState; State state = soldOutState; int count = 0; public GumballMachine(int theNumGumballs) { soldOutState = new SoldOutState(this); noQuarterState = new NoQuarterState(this); hasQuarterState = new HasQuarterState(this); soldState = new SoldState(this); count = theNumGumballs; if (count > 0) { state = noQuarterState; } else { state = soldOutState; } } public void setSoldOutState( ) { state = soldOutState; } public void setNoQuarterState( ) { state = noQuarterState; } public void setHasQuarterState( ) { state = hasQuarterState; } public void setSoldState( ) { state = soldState; } public void insertQuarter( ) { state.insertQuarter( ); } public void turnCrank( ) { state.turnCrank( ); } public void takeGumball( ) { state.takeGumball( ); } public void refillMachine(int n) { state.refillMachine(n); } public void setState(State theState) { state = theState; } }