Паттерн «Команда»
Паттерн проектирования, который оборачивает действие в объект, чтобы его можно было поставить в очередь, отменить или воспроизвести позже.
Описанный «Бандой четырёх» в Design Patterns (1994), он, пожалуй, лучше всего прижился в играх: с него начинается книга Роберта Нистрома Game Programming Patterns (2014). Вместо того чтобы вызывать jump() прямо из обработчика нажатия клавиши, создают JumpCommand — объект. Тот же код позволяет переназначать клавиши, подавать ИИ точно такие же команды и записывать их для повтора.
Сильнее всего это окупается в undo/redo: команда, умеющая выполнять себя, может научиться и отменять себя. Слой ввода ничего не знает о том, что делает команда, — лишь о том, что её нужно запустить. Такая развязка работает и в сетевой игре, где клиент отправляет не готовое состояние, а команды.