Состояние (State) — различия между версиями
Материал из Вики ИТ мехмата ЮФУ
Admin (обсуждение | вклад) (→Участники) |
Admin (обсуждение | вклад) (→Участники) |
||
Строка 17: | Строка 17: | ||
==== Участники==== | ==== Участники==== | ||
− | * Context - контекст | + | * '''Context''' - контекст |
** Определяет интерфейс, интересный для клиентов | ** Определяет интерфейс, интересный для клиентов | ||
** Хранит экземпляр класса ConcreteState | ** Хранит экземпляр класса ConcreteState | ||
− | * State - состояние | + | * '''State''' - состояние |
** Определяет интерфейс поведения, связанного с конкретным состоянием (метод Handle()) | ** Определяет интерфейс поведения, связанного с конкретным состоянием (метод Handle()) | ||
− | * ConcreteState - конкретное состояние | + | * '''ConcreteState''' - конкретное состояние |
** Реализует интерфейс Handle() | ** Реализует интерфейс Handle() | ||
Версия 09:48, 22 июля 2014
Назначение
Позволяет объекту менять своё поведение в зависимости от состояния. Состояние моделируется абстрактным объектом с множеством подобъектов (состояний).
Описание
Использование
Паттерн используется когда поведение объекта зависит от состояния, которое может меняться.
Если в коде операций встречаются состоящие из многих ветвей условные операторы, где выбор ветви зависит от состояния, , то использование паттерна Состояние позволяет избавиться от этой тяжеловесной конструкции, поместив каждую ветвь в отдельный класс.
Реализация
Диаграмма классов
Участники
- Context - контекст
- Определяет интерфейс, интересный для клиентов
- Хранит экземпляр класса ConcreteState
- State - состояние
- Определяет интерфейс поведения, связанного с конкретным состоянием (метод Handle())
- ConcreteState - конкретное состояние
- Реализует интерфейс Handle()