Шаблон проектирования «Команда» (Command)

Шаблон проектирования «Команда» (Command) используется для инкапсуляции запроса в виде объекта, что позволяет передавать запросы в качестве параметров, хранить их в структурах данных и выполнять их в различных контекстах.

В рамках шаблона «Команда» создается класс команды, который содержит ссылку на объект-получатель, а также метод для выполнения запроса. Затем создается класс отправителя, который содержит список команд, а также методы для добавления новых команд в список и выполнения всех команд по очереди. Также может быть создан класс-клиент, который инициирует выполнение команд через отправителя.

Шаблон «Команда» может использоваться в различных сценариях, например, для реализации истории операций в текстовом редакторе, для реализации отложенных операций или для реализации паттерна «Отмена» (Undo). Он также позволяет решать проблему разделения ответственности между объектами, так как команды инкапсулируют логику выполнения запроса в отдельных объектах.