Команда — поведенческий шаблон проектирования, используемый при объектно-ориентированном программировании, представляющий действие

Объект команды заключает в себе само действие и его параметры.

 

 

Описание паттерна Command

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

 

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

Такая инкапсуляция позволяет передавать эти действия другим функциям и объектам в качестве параметра, приказывая им выполнить запрошенную операцию.

Команда – это объект, поэтому над ней допустимы любые операции, что и над объектом.

Интерфейс командного объекта определяется абстрактным базовым классом Command и в самом простом случае имеет единственный метод execute().

Производные классы определяют получателя запроса (указатель на объект получатель) и необходимую для выполнения операцию (метод этого объекта).

Метод execute() подклассов Command просто вызывает нужную операцию получателя.

В паттерне Command может быть до трех участников:

Клиент, создающий экземпляр командного объекта.

● Инициатор запроса, использующий командный объект.

● Получатель запроса.

Сначала клиент создает объект ConcreteCommand, конфигурируя его получателем запроса.

Этот объект также доступен инициатору.

Инициатор использует его при отправке запроса, вызывая метод execute().

Этот алгоритм напоминает работу функции обратного вызова в процедурном программировании

– функция регистрируется, чтобы быть вызванной позднее.

Паттерн Command отделяет объект, инициирующий операцию, от объекта, который знает, как ее выполнить.

Единственное, что должен знать инициатор, это как отправить команду.

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

UML-диаграмма классов паттерна Command

 

 

Тип: поведенческий

Назначение: для обработки команды в виде объекта

Родственные шаблоны: Компоновщик, Хранитель, Прототип, Одиночка

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: