예제 #1
0
        static void Main(string[] args)
        {
            Ducks.IDuck mallard = new Ducks.Counter(new Ducks.Mallard());
            Ducks.IDuck redhead = new Ducks.Counter(new Ducks.RedHead());
            Ducks.IDuck rubber  = new Ducks.Counter(new Ducks.Rubber());
            Ducks.IDuck goose   = new Ducks.Counter(new Wilds.DuckAdapter(new Wilds.Goose()));

            Simulate(mallard);
            Simulate(redhead);
            Simulate(rubber);
            Simulate(goose);
            Console.WriteLine("Quantidade de QUACK: " + Ducks.Counter.GetCounter()); // 4 Quacks

            //////////////////////////////////////////////////////////////

            Ducks.DuckFactory factory      = new Ducks.Factory();
            Ducks.DuckFactory factorycount = new Ducks.CountQuackFactory();

            Ducks.IDuck mallard2 = factory.CreateMallard();
            Ducks.IDuck redhead2 = factorycount.CreateRedHead();
            Ducks.IDuck rubber2  = factory.CreateRubber();

            Simulate(mallard2);
            Simulate(redhead2);
            Simulate(rubber2);

            Console.WriteLine("Quantidade de QUACK: " + Ducks.Counter.GetCounter()); // 4 + 1 Quack



            Console.ReadKey();
        }
예제 #2
0
 static void Simulate(Ducks.IDuck duck)
 {
     duck.Quack();
 }
예제 #3
0
 public Counter(Ducks.IDuck duck)
 {
     this.duck = duck;
 }