Паттерн "Команда" инкапсулирует запрос в виде объекта, делая возможной параметризацию клиентский объектов с другими запросами, организацию очереди или регистрацию запросов, а также поддержку отмены операций. Паттерн "Команда" отделяет объект, выдающий запросы, от объекта, который умеет эти запросы выполнять. Объект команды инкапсулирует получателя с операцией (или набором операций). Инициатор вызывает метод *execute()* объекта команды, что приводит к выполнению соответствующих операций с получателем. Возможна параметризация инициаторов командами. Команды могут поддерживать механизмы отмены, восстанавливающий объект в состояние до последнего вызова метода *execute()*. Макрокоманды - простое расширение паттерна "Команда", позволяющее выполнять цепочки из нескольких команд.