void Simulate() { IQuackable mallardDuck = new MallardDuck(); IQuackable readHeadDuck = new ReadHeadDuck(); IQuackable duckCall = new DuckCall(); IQuackable rubberDuck = new RubberDuck(); //Теперь гуси тоже смогут участвовать в нашей имитации. Goose goose = new Goose(); // Goose замаскировывается под Duck IQuackable gooseDuck = new GooseAdapter(goose); // Goose упаковывается в GooseAdapter Console.WriteLine("Duck Simulator : With GooseAdapter"); Simulate(mallardDuck); Simulate(readHeadDuck); Simulate(duckCall); Simulate(rubberDuck); Simulate(gooseDuck); // С адаптироваанным объектом Goose можно работать, как с обычным объектом Duck, реализующем IQuackable }
// Конмтруктор получает адаптируемый объект Goose public GooseAdapter(Goose goose) { this.goose = goose; }