Шаблон состояния позволяет объекту изменять свое поведение при изменении его внутреннего состояния
State Pattern: It allows an object to change its behavior when its internal state changes. It appears as if the object changed its class.
Powerful Polecat