intermediate

State

Выносите state-specific behavior из conditionals, когда object меняет behavior across explicit lifecycle states.

State выносит поведение фаз жизненного цикла в отдельные state-объекты вместо больших `switch` по status. Переходы — явные методы, меняющие active state: заказы, тикеты, workflows, handshakes. Естественно сочетается с FSM и guards на недопустимые переходы.

На интервью: рефакторинг status `if` chain в State classes. Table-driven FSM как альтернатива.

Типовые ошибки: states непоследовательно мутируют context; дублирование transition logic в UI и backend; недостижимые states в типах.

Компромисс — гибкость против сложности: знайте, когда достаточно более простого пути.

Чеклист:

  • Каждый state реализует только допустимые операции.
  • Нелегальные переходы — понятные ошибки.
  • Context делегирует текущему state.
  • Диаграмма или таблица допустимых переходов.