Недавно я сталкивался с Command Pattern
. В этом шаблоне Клиент отвечает за создание экземпляров Reciever, ConcreteCommand и Invoker. В какой-то момент времени (допустим, при нажатии кнопки) вызывается метод Invoke для Invoker. Теперь метод Invoke отвечает за выполнение определенной операции в Reciever. Но зачем мне Invoker (иначе шаблон команды), когда клиент может напрямую вызвать конкретное действие с помощью Reciever?