Описание тега state-pattern

Используйте этот тег для вопросов, связанных с шаблоном проектирования State, одним из шаблонов поведенческого проектирования "Банды четырех". Также рассмотрите возможность использования тега [design-patterns] и тега языка программирования, если применимо.

Согласно книге GoF (стр. 305), цель паттерна государственного проектирования состоит в том, чтобы:

Разрешить объекту изменять свое поведение при изменении его внутреннего состояния. Объект изменит свой класс.

Существует два сценария, в которых применим шаблон проектирования State (стр. 306).

  1. Поведение объекта зависит от его состояния, и он должен изменять свое поведение во время выполнения в зависимости от этого состояния.
  2. Операции имеют большие, состоящие из нескольких частей условные операторы, которые зависят от состояния объекта. Это состояние обычно представлено одной или несколькими пронумерованными константами. Часто несколько операций содержат одну и ту же условную структуру. Паттерн State помещает каждую ветвь условия в отдельный класс. Это позволяет вам рассматривать состояние объекта как самостоятельный объект, который может отличаться от других объектов.

Есть три последствия применения шаблона проектирования State (стр. 307).

  1. Он локализует поведение, зависящее от состояния, и разделяет поведение для разных состояний.
  2. Он делает переходы между состояниями явными.
  3. Государственные объекты могут быть общими.

Подробные сведения о структуре и реализации шаблона проектирования State см. В следующих онлайн-ресурсах.

Обратите внимание, что тег шаблонов проектирования включает этот шаблон, а также другие 22 шаблона из книги GoF. Рассмотрите возможность использования любых из этих тегов в комбинации, если это применимо.