Описание тега state-pattern
Используйте этот тег для вопросов, связанных с шаблоном проектирования State, одним из шаблонов поведенческого проектирования "Банды четырех". Также рассмотрите возможность использования тега [design-patterns] и тега языка программирования, если применимо.
Согласно книге GoF (стр. 305), цель паттерна государственного проектирования состоит в том, чтобы:
Разрешить объекту изменять свое поведение при изменении его внутреннего состояния. Объект изменит свой класс.
Существует два сценария, в которых применим шаблон проектирования State (стр. 306).
- Поведение объекта зависит от его состояния, и он должен изменять свое поведение во время выполнения в зависимости от этого состояния.
- Операции имеют большие, состоящие из нескольких частей условные операторы, которые зависят от состояния объекта. Это состояние обычно представлено одной или несколькими пронумерованными константами. Часто несколько операций содержат одну и ту же условную структуру. Паттерн State помещает каждую ветвь условия в отдельный класс. Это позволяет вам рассматривать состояние объекта как самостоятельный объект, который может отличаться от других объектов.
Есть три последствия применения шаблона проектирования State (стр. 307).
- Он локализует поведение, зависящее от состояния, и разделяет поведение для разных состояний.
- Он делает переходы между состояниями явными.
- Государственные объекты могут быть общими.
Подробные сведения о структуре и реализации шаблона проектирования State см. В следующих онлайн-ресурсах.
Обратите внимание, что тег шаблонов проектирования включает этот шаблон, а также другие 22 шаблона из книги GoF. Рассмотрите возможность использования любых из этих тегов в комбинации, если это применимо.