State (Design Pattern)
State Pattern: Allow an object to alter its behavior when its internal state changes. The object will appear to change its class.
References
Online Referencdes
Head first book:
pg. 381 in Head First Design Patterns 2nd Ed.
Example code: head first design patterns state pattern