Обмен технологиями

Образец состояния

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Образец состояния

определение

Также называется шаблоном конечного автомата.
Сложная логика оценки упрощается за счет определения различных классов состояний для инкапсуляции поведения, связанного с конкретными состояниями, и переноса логики оценки состояния в ряд классов, представляющих разные состояния.

  • Шаблон состояния разделяет состояние и поведение, позволяя объекту изменять свое поведение при изменении его внутреннего состояния.
  • Каждое состояние соответствует подклассу, тем самым распределяя логику перехода состояний по подклассам состояний, уменьшая взаимозависимость.
  • Клиент обычно не взаимодействует с объектом состояния напрямую, а взаимодействует с объектом состояния через класс среды (Контекст).

Применимая сцена

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

Стандартный пример

Вставьте сюда описание изображения

На диаграмме структуры шаблона состояний он обычно содержит следующие роли:

  • Контекст (класс среды): также называемый классом контекста, это объект с несколькими состояниями. Поддерживайте экземпляр абстрактного класса состояний State в классе среды, который определяет текущее состояние.
  • Состояние (класс абстрактного состояния): используется для определения интерфейса для инкапсуляции поведения, связанного с определенным состоянием класса среды. Методы, соответствующие различным состояниям, объявляются в классе абстрактного состояния и реализуются в подклассах.
  • ConcreteState (класс конкретного состояния): это подкласс класса абстрактного состояния. Каждый подкласс реализует поведение, связанное с состоянием класса среды.

IState

public interface IState {
    void handle();
}