VendingMachine
- state: VMState
+ insertCoin()
+ select(p)
«interface»
VMState
+ insertCoin()
+ select(p)
+ dispense()
Inventory
- slots: Map
IdleState
HasMoney
Dispensing
States as classes
1interface VMState { void insertCoin(Coin c); void select(Product p); }2class IdleState implements VMState { ... }3class HasMoney implements VMState { ... }4class Dispensing implements VMState { ... }5class VendingMachine { VMState state; void insertCoin(c){ state.insertCoin(c); } }
State
VendingMachinedelegates to state