Кнопка может напрямую вызывать
jump() или fireGun(). Command превращает вызов в объект с методом execute(). Обработчик ввода хранит команду для каждой кнопки, поэтому назначение можно заменить без переписывания его логики.Если передавать в
execute() персонажа, одна команда прыжка сможет управлять любым героем. Команды создаёт и ввод игрока, и ИИ, а другой код применяет их к персонажу. Очередь между ними отделяет источник решения от исполнителя. Если команды сохраняются в передаваемом формате, их можно отправить по сети и воспроизвести на другой машине.Глава о Command в Game Programming Patterns разбирает подход на примерах C++. Получается один механизм для переназначения кнопок, управления героями через ИИ, сетевого воспроизведения и отмены действий.