Обзор темы [Шаблоны проектирования]

Затем: МотивацияНазначение

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

Затем: СтруктураМотивация

Рассмотрим класс TCPConnection, который представляет собой сетевое соединение. Объект TCPConnection может пребывать в одном из нескольких различных состояний: Established, Listening, Closed. Когда объект TCPConnection получает запрос от других объектов, он отвечает по-разному в зависимости от текущего состояния. Например, результат запроса на открытие зависит от того, находится ли он в закрытом состоянии или его уже открыли. Шаблон Состояния описывает, как TCPConnection может демонстрировать различное поведение в каждом состоянии.

Ключевая идея в этом шаблоне состоит в том, чтобы представить абстрактный класс TCPState, представляющего состояние сетевого соединения. Класс TCPState объявляет интерфейс, общий для всех классов, представляющих различные состояния. Подклассы TCPStateImplement - специфические для состояния. Например, классы TCPEstablished и TCPClosed описывают поведения, специфические для Established и Closed состояниям TCPConnection.

Класс TCPConnection поддерживает объект состояния (экземпляр TCPState) который представляет текущее состояние TCPConnection. Класс TCPConnection делегирует все запросы, специфические для объекта состояния. TCPConnection использует экземпляр подкласса TCPState, чтобы выполнять соответствующие операции.

Всякий раз, когда состояние изменяется, TCPConnection меняет объект состояния, который он использует.

Затем: Составные частиСтруктура

Составные части