Паттерн Состояние на C#

Паттерн Состояние управляет изменением поведения объекта при изменении его внутреннего состояния.

Внешнее это выглядит так, словно объект меняет свой класс.

Паттерн Состояние позволяет объекту иметь много разный вариантов поведения в зависимости от его внутреннего состояния.

В отличие от процедурных конечных автоматов, состояние в этом паттерне представляется полноценным классом.

Поведение контекста реализуется делегированием выполняемых операций текущему объекту состояния, с которым он связан посредством композиции.

Инкапсуляция состояния в классе локализует его возможные изменения.

Паттерн Состояние и Стратегия имеют похожие диаграммы классов, но решают разные задачи.

Паттерн Стратегия обычно определяет в классе контекста поведение алгоритма. Паттерн Состояние изменяет поведение контекста в соответствии с изменениями его состояния.

Переходами между состояниями могут управлять как классы состояний, так и классы контекстов.

Применения Паттерна Состояние обычно увеличивает количество классов в архитектуре.

Классы состояний могут совместно использоваться несколькими экземплярами контекстов.

А теперь приступим к рассмотрению примера. Представим у нас есть автомат по выдачи жевательных конфет, нам необходимо реализовать логику выдачи конфет в обмен на монеты. Сразу стоит представить ход действий покупателя, для начала покупатель вставляет монету, потом поворачивает рычаг, потом автомат выдает конфету. Но также стоит отметить еще условия, когда покупатель, но вставит монету, и повернет рычаг, когда конфеты закончатся, или попытается вставить несколько монет. Я думаю, у многих сразу сформировалось представления метода с множеством if else ветвлением. Я уже не говорю о том, что если нам потребуется добавлять новое состояние, это придется груду кода переписать, добавить новых условий. Вот от всех этих if else нам и поможет избавиться Паттерн Состояние

 

Обновлено: 28.01.2022 — 10:27

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.