State

The State design pattern allows an object to alter its behavior when its internal state changes. The object will appear to change its class.