Пример #1
0
        // Decorator pattern
        void countTheDucks_Click(object sender, EventArgs e)
        {
            QuackCounter.ResetQuacks();

            // An example of the decorator pattern
            List<IQuackable> ducksToCount = new List<IQuackable>();
            IQuackable mallardDuck = new QuackCounter(new MallardDuck());
            IQuackable rubberDuck = new QuackCounter(new RubberDuck());
            IQuackable decoy = new DuckDecoy();
            ducksToCount.Add(mallardDuck);
            ducksToCount.Add(rubberDuck);
            ducksToCount.Add(decoy);
            OutputData(ducksToCount);
            Console.WriteLine("Number of quacks: " + QuackCounter.GetNumberOfQuacks());
        }
Пример #2
0
        // Adapter pattern
        void quackTheDucks_Click(object sender, EventArgs e)
        {
            List<IQuackable> ducksToQuack = new List<IQuackable>();

            // Let's create some ducks - shows the beauty of interfaces
            MallardDuck mallardDuck = new MallardDuck();
            ducksToQuack.Add(mallardDuck);
            RubberDuck rubberDuck = new RubberDuck();
            ducksToQuack.Add(rubberDuck);
            DuckDecoy duckDecoy = new DuckDecoy();
            ducksToQuack.Add(duckDecoy);

            // Add a goose adapter to show the adapter pattern
            Goose goose = new Goose();
            GooseToDuckAdapter gooseToDuckAdapter = new GooseToDuckAdapter(goose);
            ducksToQuack.Add(gooseToDuckAdapter);

            OutputData(ducksToQuack);
        }