Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Design Patterns via C#.pdf
Скачиваний:
154
Добавлен:
17.03.2016
Размер:
13.25 Mб
Скачать

264

}

case Mark.Five:

{

father.State = new StrongJoyState(); // S5 break;

}

}

}

private void Exult() // y5

{

Console.WriteLine("Ликует и гордится сыном.");

}

}

См. Пример к главе: \020_State\004_StateMotivation

Применимость паттерна

Паттерн State рекомендуется использовать, когда:

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

В телах методов встречаются условные конструкции, состоящие из множества ветвей, при этом выбор необходимой ветви зависит от состояния. Рекомендуется каждую такую ветвь представить отдельным классом, так как это позволит трактовать каждое состояние, как самостоятельный объект, который может изменяться независимо от других объектов.

Результаты

Паттерн State обладает следующими преимуществами:

Локализация поведения, зависящего от состояния.

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

Разделяемые объекты состояния.

Разные контексты Context могут разделять один и тот же объект типа State.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]