Паттерн State относится к поведенческим паттернам уровня объекта.
Паттерн State позволяет объекту изменять свое поведение в зависимости от внутреннего состояния и является объектно-ориентированной реализацией конечного автомата. Поведение объекта изменяется настолько, что создается впечатление, будто изменился класс объекта.
Паттерн должен применяться:
- когда поведение объекта зависит от его состояния
- поведение объекта должно изменяться во время выполнения программы
- состояний достаточно много и использовать для этого условные операторы, разбросанные по коду, достаточно затруднительно
Требуется для реализации:
- Класс Context, представляет собой объектно-ориентированное представление конечного автомата;
- Абстрактный класс State, определяющий интерфейс различных состояний;
- Класс ConcreteStateA реализует одно из поведений, ассоциированное с определенным состоянием;
- Класс ConcreteStateB реализует одно из поведений, ассоциированное с определенным состоянием.
[!] В описании паттерна применяются общие понятия, такие как Класс, Объект, Абстрактный класс. Применимо к языку Go, это Пользовательский Тип, Значение этого Типа и Интерфейс. Также в языке Go вместо наследования используется композиция.