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
        }
예제 #2
0
 // Конмтруктор получает адаптируемый объект Goose
 public GooseAdapter(Goose goose)
 {
     this.goose = goose;
 }