Паттерн «Команда»
Teaches the command pattern for decoupling task execution from invocation. Use when you need undo/redo functionality, queued operations, or want to decouple the object that invokes an operation from the one that performs it.
Что делает навык
Паттерн «Команда» разделяет объект, инициирующий операцию, и объект, который её выполняет, инкапсулируя действие в отдельный объект-команду. Это позволяет отделить вызов метода от его реализации, упрощая управление жизненным циклом команд, их очередь или изменение логики без переписывания вызывающего кода.
Когда применять
- Когда требуется отделить объект, инициирующий операцию, от объекта, который её выполняет.
- Когда команды должны иметь определённый срок жизни или выполняться в очереди в конкретное время.
- Когда необходимо избежать жёсткой привязки вызовов методов к конкретным именам методов в менеджере (например, при переименовании методов в будущем).
- Когда прямые вызовы функций создают слишком много связей или сложность в поддержке кодовой базы.
Как работает
- Создать базовый класс Command с методом execute, который инкапсулирует действие.
- Заменить прямые вызовы методов (например, placeOrder, cancelOrder) на единый метод execute в менеджере (например, OrderManager).
- Метод execute менеджера должен принимать объект команды и аргументы, передавая их в метод execute команды.
- Создать отдельные функции-фабрики для каждой команды (PlaceOrderCommand, CancelOrderCommand, TrackOrderCommand), возвращающие экземпляры Command.
- Передавать необходимые данные (например, список заказов) в команду через аргументы или замыкания при создании команды.
Примеры запросов агенту
Описание составлено по SKILL.md навыка, сверено 06.10.2026.
Как подключить
SKILL.md к навыкам ассистентаНавык — папка с файлом SKILL.md (описание + инструкции) и опциональными скриптами. Ассистент (Claude, Claude Code и совместимые) подхватывает его по описанию и следует шагам.