static void Main(string[] args) { // Клиентский код может параметризовать отправителя любыми // командами. Invoker invoker = new Invoker(); invoker.SetOnStart(new WaiterGettingOrder("Say Hi!")); Cooker receiver = new Cooker(); invoker.SetOnProcess(new WaiterHendToCooker(receiver, "Make fish", "Make meat")); invoker.SetOnFinish(new Taxi("Taxi is driving to client")); invoker.DoSomethingImportant(); Console.ReadLine(); }
// Сложные команды могут принимать один или несколько объектов- // получателей вместе с любыми данными о контексте через конструктор. public WaiterHendToCooker(Cooker cooker, string a, string b) { _cook = cooker; _a = a; _b = b; }