Состояние (State) — различия между версиями

Материал из Вики ИТ мехмата ЮФУ
Перейти к: навигация, поиск
(Участники)
(Участники)
Строка 17: Строка 17:
  
 
==== Участники====
 
==== Участники====
* Context - контекст
+
* '''Context''' - контекст
 
** Определяет интерфейс, интересный для клиентов
 
** Определяет интерфейс, интересный для клиентов
 
** Хранит экземпляр класса ConcreteState
 
** Хранит экземпляр класса ConcreteState
* State - состояние
+
* '''State''' - состояние
 
** Определяет интерфейс поведения, связанного с конкретным состоянием (метод Handle())
 
** Определяет интерфейс поведения, связанного с конкретным состоянием (метод Handle())
* ConcreteState - конкретное состояние
+
* '''ConcreteState''' - конкретное состояние
 
** Реализует интерфейс Handle()
 
** Реализует интерфейс Handle()
  

Версия 09:48, 22 июля 2014

К основной странице курса

Назначение

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

Описание

Использование

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

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

Реализация

Диаграмма классов

.png

Участники

  • Context - контекст
    • Определяет интерфейс, интересный для клиентов
    • Хранит экземпляр класса ConcreteState
  • State - состояние
    • Определяет интерфейс поведения, связанного с конкретным состоянием (метод Handle())
  • ConcreteState - конкретное состояние
    • Реализует интерфейс Handle()

Диаграмма последовательности

Файл:.png

Пример

Достоинства и недостатки

Варианты