static void Main(string[] args) { // Клиентский код может параметризовать отправителя любыми // командами. Client client = new Client(); client.SetOnStart(new WaiterOne("Hi!")); Cook cook = new Cook(); client.SetOnMiddle(new WaiterTwo(cook, "Meat", "Salad")); Driver driver = new Driver(); client.SetOnFinish(new WaiterThree(driver, "Abaya 44", "Manasa 2")); client.DoSomethingImportant(); Console.ReadLine(); }
// Сложные команды могут принимать один или несколько объектов- // получателей вместе с любыми данными о контексте через конструктор. public WaiterTwo(Cook receiver, string a, string b) { this._receiver = receiver; this._a = a; this._b = b; }