Ejemplo n.º 1
0
        public void Simulate(AbstractDuckFactory factory)
        {
            var flockOfDucks = new Flock();

            flockOfDucks.Add(factory.CreateMallardDuck());
            flockOfDucks.Add(factory.CreateRedheadDuck());
            flockOfDucks.Add(factory.CreateDuckCall());
            flockOfDucks.Add(factory.CreateRubberDuck());
            flockOfDucks.Add(new QuackCounter(new GooseAdapter(new Goose())));

            var flockOfMallards = new Flock();

            for (int i = 0; i < 4; i++)
            {
                flockOfMallards.Add(factory.CreateMallardDuck());
            }

            flockOfDucks.Add(flockOfMallards);

            "Duck Simulator with Observer\n--------------------------------".P();
            var quackologist = new Quackologist();

            flockOfDucks.RegisterObserver(quackologist);
            flockOfDucks.Quack();
            "Mallard Simulator\n--------------------------------".P();
            flockOfMallards.Quack();
            "--------------------------------\nThe ducks quacked {0} times".P(QuackCounter.GetQuacks());
        }
        public void Init()
        {
            duckFactory = new CountingDuckFactory();

            //QuackCounter is Decorator Pattern
            mallardDuck = duckFactory.CreateMallardDuck();
            redheadDuck = duckFactory.CreateRedheadDuck();
            duckCall    = duckFactory.CreateDuckCall();
            rubberDuck  = duckFactory.CreateRubberDuck();
            gooseDuck   = new GooseAdapter(new Goose());          //Adapter Pattern

            //Flock is Iterator Pattern
            flockOfDucks = new Flock();

            flockOfDucks.Add(redheadDuck);
            flockOfDucks.Add(duckCall);
            flockOfDucks.Add(rubberDuck);
            flockOfDucks.Add(gooseDuck);

            flockOfMallards = new Flock();

            mallardOne   = duckFactory.CreateMallardDuck();
            mallardTwo   = duckFactory.CreateMallardDuck();
            mallardThree = duckFactory.CreateMallardDuck();
            mallardFour  = duckFactory.CreateMallardDuck();

            flockOfMallards.Add(mallardOne);
            flockOfMallards.Add(mallardTwo);
            flockOfMallards.Add(mallardThree);
            flockOfMallards.Add(mallardFour);

            flockOfDucks.Add(flockOfMallards);
        }
Ejemplo n.º 3
0
            internal void Simnulate(AbstractDuckFactory duckFactory)
            {
                //1.使用工厂创建鸭子
                //2.使用装饰者,创建被装饰的鸭子
                IQuackable blueheadDuck = duckFactory.CreateBlueheadDuck();
                IQuackable pinkheadDuck = duckFactory.CreatePinkheadDuck();
                IQuackable duckCall     = duckFactory.CreateDuckCall();
                IQuackable rubberDuck   = duckFactory.CreateRubberDuck();
                //使用适配器模式创建一个会鹅叫的鸭子。
                IQuackable gooseDuck = new GooseAdapter(new Goose());

                IQuackable[] quacks = { blueheadDuck, pinkheadDuck, duckCall, rubberDuck, gooseDuck };
                //使用组合模式和迭代器模式
                Flock flockOfDucks = new Flock(quacks);

                Console.WriteLine("------鸭子模拟器-------");
                Simnulate(flockOfDucks);

                Console.WriteLine("------观察开始-------");
                //使用观察者模式
                IQuackableObservable provider  = new IQuackableObservable();
                IQuackableObserver   reporter1 = new IQuackableObserver();

                reporter1.Subscribe(provider);
                provider.Notify(duckFactory.CreateRubberDuck());
                Console.WriteLine("------观察结束-------");

                Console.WriteLine("鸭子叫的次数为:" + QuackCounter.NumberOfQuacks);
            }
Ejemplo n.º 4
0
        private void Simulate(AbstractDuckFactory duckFactory)
        {
            Flock flockOfDucks = new Flock
            {
                duckFactory.CreateRedheadDuck(),
                  duckFactory.CreateDuckCall(),
                  duckFactory.CreateRubberDuck(),
                new GooseAdapter(new Geese.Goose())
            };

            Flock flockOfMallards = new Flock
            {
                duckFactory.CreateMallardDuck(),
                  duckFactory.CreateMallardDuck(),
                  duckFactory.CreateMallardDuck(),
                  duckFactory.CreateMallardDuck(),
            };

            Console.WriteLine("\nDuck Simulator: With Observer");
            Quackologist quackologist = new Quackologist();

            flockOfDucks.Subscribe(quackologist);

            flockOfDucks.Add(flockOfMallards);

            Console.WriteLine("\nDuck Simulator: Whole Flock Simulator");
            Simulate(flockOfDucks);

            Console.WriteLine("\nDuck Simulator: Mallard Flock Simulator");
            Simulate(flockOfMallards);

            Console.WriteLine("\nThe ducks quacked {0} times", QuackCounter.Count);
        }
Ejemplo n.º 5
0
    public void simulate(AbstractDuckFactory duckFactory)
    {
        Quackable mallardDuck  = duckFactory.createMallardDuck();
        Quackable redheadDuck  = duckFactory.createRedheadDuck();
        Quackable duckCall     = duckFactory.createDuckCall();
        Quackable rubberDuck   = duckFactory.createRubberDuck();
        Goose     goose        = new Goose();
        Quackable gooseAdapter = new GooseAdapter(goose);

        Flock flockOfDucks = new Flock();

        Quackologist quackologist = new Quackologist();

        flockOfDucks.add(mallardDuck);
        flockOfDucks.add(redheadDuck);
        flockOfDucks.add(duckCall);
        flockOfDucks.add(rubberDuck);

        //foarte important sa fie dupa ce am adaugat lez ducks ,
        //inregistrarea observerului se face cu interator pt toate lez ducks existente
        flockOfDucks.registerObserver(quackologist);

        Console.WriteLine("Duck Simulator");

        simulate(flockOfDucks);

        Console.WriteLine(" The ducks quacked " + QuackCounter.getQaucks() + " times");
    }
        public void Dispose()

        {
            duckFactory = null;

            mallardDuck = null;

            redheadDuck = null;

            duckCall = null;

            rubberDuck = null;

            gooseDuck = null;

            flockOfDucks = null;

            flockOfMallards = null;

            mallardOne = null;

            mallardTwo = null;

            mallardThree = null;

            mallardFour = null;
        }
Ejemplo n.º 7
0
        void Simulate(AbstractDuckFactory duckFactory)
        {
            Quackable mallardDuck = duckFactory.CreateMallardDuck();
            Quackable redHeadDuck = duckFactory.CreateRedHeadDuck();
            Quackable duckCall = duckFactory.CreateDuckCall();
            Quackable rubberDuck = duckFactory.CreateRubberDuck();
            Quackable gooseAdapter = duckFactory.CreateGeese();// new GeeseAdapter(new Geese());

            Flock duckFlock = new Flock();
            duckFlock.Add(mallardDuck);
            duckFlock.Add(redHeadDuck);
            duckFlock.Add(duckCall);
            duckFlock.Add(rubberDuck);
            duckFlock.Add(gooseAdapter);

            Flock mallardFlock = new Flock();
            mallardFlock.Add(duckFactory.CreateMallardDuck());
            mallardFlock.Add(duckFactory.CreateMallardDuck());
            mallardFlock.Add(duckFactory.CreateMallardDuck());
            mallardFlock.Add(duckFactory.CreateMallardDuck());

            //again add the mallard to duck flock
            duckFlock.Add(mallardFlock);

            //Quackalogist qmallard = new Quackalogist();
            //MallardDuck malldck = new MallardDuck();
            //malldck.RegisterObservable(qmallard);
            //Simulate(malldck);

            //Quackalogist quackalogist = new Quackalogist();
            //Quackable mallardDuckDec = new QuackCounter(new MallardDuck());
            //mallardDuckDec.RegisterObservable(quackalogist);
            //Simulate(mallardDuckDec);

            Quackalogist quackalogistFlock = new Quackalogist();
            duckFlock.RegisterObservable(quackalogistFlock);

            Console.WriteLine("\nPrinting duckflock+ mallardflock");
            Simulate(duckFlock);

            Console.WriteLine("\nPrinting mallardflock");
            //mallardFlock.RegisterObservable(quackalogistFlock);
            Simulate(mallardFlock);

            Console.WriteLine(QuackCounter.GetQuackCounter());
        }
        public void Simulate(AbstractDuckFactory duckFactory)
        {
            IQuackable mallardDuck = duckFactory.CreateMallardDuck();
            IQuackable redheadDuck = duckFactory.CreateRedheadDuck();
            IQuackable duckCall    = duckFactory.CreateDuckCall();
            IQuackable rubberDuck  = duckFactory.CreateRubberDuck();
            IQuackable gooseDuck   = new GooseAdapter(new Goose());

            Console.WriteLine("\nDuck Simulator: With Abstract Factory, Composite - Flocks");

            Flock flockOfDucks = new Flock();

            flockOfDucks.Add(redheadDuck);
            flockOfDucks.Add(duckCall);
            flockOfDucks.Add(rubberDuck);
            flockOfDucks.Add(gooseDuck);

            Flock flockOfMallards = new Flock();

            IQuackable mallardOne   = duckFactory.CreateMallardDuck();
            IQuackable mallardTwo   = duckFactory.CreateMallardDuck();
            IQuackable mallardThree = duckFactory.CreateMallardDuck();
            IQuackable mallardFour  = duckFactory.CreateMallardDuck();

            flockOfMallards.Add(mallardOne);
            flockOfMallards.Add(mallardTwo);
            flockOfMallards.Add(mallardThree);
            flockOfMallards.Add(mallardFour);

            flockOfDucks.Add(flockOfMallards);

            Console.WriteLine("\nDuck Simulator: Whole Flock Simulation");
            Simulate(flockOfDucks);

            Console.WriteLine("\nDuck Simulator: Mallard Flock Simulation");
            Simulate(flockOfMallards);

            Console.WriteLine("\nDuck Simulator: With Observer");
            Quackologist quackologist = new Quackologist();

            flockOfDucks.RegisterObserver(quackologist);
            Simulate(flockOfDucks);

            Console.WriteLine("The ducks quacked " + QuackCounter.NumberOfQuacks + " times.");
        }
Ejemplo n.º 9
0
        private static void Simulate(AbstractDuckFactory duckFactory, AbstractGooseFactory gooseFactory)
        {
            IQuackable mallardDuck  = duckFactory.CreateMallardDuck();
            IQuackable readheadDuck = duckFactory.CreateReadheadDuck();
            IQuackable duckCall     = duckFactory.CreateDuckCall();
            IQuackable rubberDuck   = duckFactory.CreateRubberDuck();
            IQuackable gooseDuck    = new GooseAdapter(gooseFactory.CreateGoose());

            Console.WriteLine("\nDuck Simulator: With Composite - Flocks");

            var flockOfDucks = new Flock();

            flockOfDucks.Add(mallardDuck);
            flockOfDucks.Add(readheadDuck);
            flockOfDucks.Add(duckCall);
            flockOfDucks.Add(rubberDuck);
            flockOfDucks.Add(gooseDuck);

            var flockOfMallards = new Flock();

            IQuackable mallard_1 = duckFactory.CreateMallardDuck();
            IQuackable mallard_2 = duckFactory.CreateMallardDuck();
            IQuackable mallard_3 = duckFactory.CreateMallardDuck();
            IQuackable mallard_4 = duckFactory.CreateMallardDuck();

            flockOfMallards.Add(mallard_1);
            flockOfMallards.Add(mallard_2);
            flockOfMallards.Add(mallard_3);
            flockOfMallards.Add(mallard_4);

            flockOfDucks.Add(flockOfMallards);

            Console.WriteLine("\nDuck Simulator: With Observer");
            var quackologist = new Quackologist();

            flockOfDucks.RegisterObserver(quackologist);

            Console.WriteLine("\nDuck Simulator: Whole Flock Simulation");
            Simulate(flockOfDucks);

            Console.WriteLine("\nDuck Simulator: Mallard Flock Simulation");
            Simulate(flockOfMallards);

            Console.WriteLine($"The ducks quacked {QuackCounter.GetQuacks()} times");
        }
Ejemplo n.º 10
0
        public void Simulate(AbstractDuckFactory duckFactory, AbstractGooseAdapterFactory gooseAdapterFactory)
        {
            var redheadDuck = duckFactory.CreateRedheadDuck();
            var duckCall    = duckFactory.CreateDuckCall();
            var rubberDuck  = duckFactory.CreateRubberDuck();
            var goose       = gooseAdapterFactory.CreateGooseAdapter();

            var ducksFlock = new DuckFlock();

            ducksFlock.Add(redheadDuck);
            ducksFlock.Add(duckCall);
            ducksFlock.Add(rubberDuck);
            ducksFlock.Add(goose);

            var mallardDuck1      = duckFactory.CreateMallardDuck();
            var mallardDuck2      = duckFactory.CreateMallardDuck();
            var mallardDuck3      = duckFactory.CreateMallardDuck();
            var mallardDuck4      = duckFactory.CreateMallardDuck();
            var mallardDucksFlock = new DuckFlock();

            mallardDucksFlock.Add(mallardDuck1);
            mallardDucksFlock.Add(mallardDuck2);
            mallardDucksFlock.Add(mallardDuck3);
            mallardDucksFlock.Add(mallardDuck4);

            ducksFlock.Add(mallardDucksFlock);

            Console.WriteLine("\n--- Duck simulator ---\n");

//            Console.WriteLine("\n---- Duck simulator: Whole Flock simulation\n");
//            Simulate(ducksFlock);
//
//            Console.WriteLine("\n---- Duck simulator: Whole Flock simulation\n");
//            Simulate(mallardDucksFlock);

//            Console.WriteLine($"The ducks quacked {QuackCounterDecorator.AllQuacksCount} times");

            Console.WriteLine("\n---- Duck simulator: with observer\n");
            var quackologist = new Quackologist();

            ducksFlock.RegisterObserver(quackologist);
            Simulate(ducksFlock);

            Console.WriteLine($"The ducks quacked {QuackCounterDecorator.AllQuacksCount} times");
        }
        void Simulate(AbstractDuckFactory duckFactory)
        {
            IQuackable mallardDuck = duckFactory.CreateMallardDuck();
            IQuackable redheadDuck = duckFactory.CreateRedheadDuck();
            IQuackable duckCall    = duckFactory.CreateDuckCall();
            IQuackable rubberDuck  = duckFactory.CreateRubberDuck();
            IQuackable gooseDuck   = new GooseAdapter(new Goose());

            Console.WriteLine("Duck Simulator: With Composite - Flocks");

            //Создаем объект Flock и заполняем его реализациями IQuackable
            Flock flockOfDucks = new Flock();

            flockOfDucks.Add(redheadDuck);
            flockOfDucks.Add(duckCall);
            flockOfDucks.Add(rubberDuck);
            flockOfDucks.Add(gooseDuck);

            // Затем создаем новый объект Flock, предназначенный только для крякв (MallardDuck)
            Flock flockOfMallards = new Flock();

            IQuackable mallardOne   = duckFactory.CreateMallardDuck();
            IQuackable mallardTwo   = duckFactory.CreateMallardDuck();
            IQuackable mallardThree = duckFactory.CreateMallardDuck();
            IQuackable mallardFour  = duckFactory.CreateMallardDuck();

            flockOfMallards.Add(mallardOne);
            flockOfMallards.Add(mallardTwo);
            flockOfMallards.Add(mallardThree);
            flockOfMallards.Add(mallardFour);

            //А теперь стая крякв добавляется в основную стаю
            flockOfDucks.Add(flockOfMallards);

            Console.WriteLine("\nDuck Simulator: Whole Flock Simulation");
            Simulate(flockOfDucks);

            Console.WriteLine("\nDuck Simulator: Mallard Flock Simulation");
            Simulate(flockOfMallards);

            Console.WriteLine("\nThe ducks quacked " + QuackCounter.GetQuacks() + " times");
        }
Ejemplo n.º 12
0
        private static void generateDucksAndRunSimulation(AbstractDuckFactory abstractDuckFactory, AbstractGooseFactory abstractGooseFactory)
        {
            IQuackable redheadDuck = abstractDuckFactory.CreateRedheadDuck();
            IQuackable duckCall    = abstractDuckFactory.CreateDuckCall();
            IQuackable rubberDuck  = abstractDuckFactory.CreateRubberDuck();

            IQuackable gooseDuck = abstractGooseFactory.CreateGoose();

            Flock flockOfDucks = new Flock();

            flockOfDucks.Add(redheadDuck);
            flockOfDucks.Add(duckCall);
            flockOfDucks.Add(rubberDuck);
            flockOfDucks.Add(gooseDuck);

            Flock flockOfMallards = new Flock();

            // Create a little family of mallards here
            IQuackable mallardDuck1 = abstractDuckFactory.CreateMallardDuck();
            IQuackable mallardDuck2 = abstractDuckFactory.CreateMallardDuck();
            IQuackable mallardDuck3 = abstractDuckFactory.CreateMallardDuck();
            IQuackable mallardDuck4 = abstractDuckFactory.CreateMallardDuck();

            flockOfMallards.Add(mallardDuck1);
            flockOfMallards.Add(mallardDuck2);
            flockOfMallards.Add(mallardDuck3);
            flockOfMallards.Add(mallardDuck4);

            // Also add the flock of mallards to the flock of ducks - They are ducks in the end too!
            flockOfDucks.Add(flockOfMallards);

            Console.WriteLine("\nDuck Simulator: Whole Flock Simulation with observer");
            IObserver quackologist = new Quackologist();

            flockOfDucks.RegisterObserver(quackologist);
            simulate(flockOfDucks);

            Console.WriteLine("\nDuck Simulator: Mallard Flock Simulation");
            simulate(flockOfMallards);

            Console.WriteLine("The ducks quacked " + QuackCounterDecorator.GetNumberOfQuacks() + " times");
        }
        public void simulate(AbstractDuckFactory duckFactory)
        {
            Quackable redheadDuck = duckFactory.createRedheadDuck();
            Quackable duckCall    = duckFactory.createDuckCall();
            Quackable rubberDuck  = duckFactory.createRubberDuck();
            Quackable gooseDuck   = new GooseAdapter(new Goose());

            Flock flockOfDucks = new Flock();

            flockOfDucks.add(redheadDuck);
            flockOfDucks.add(duckCall);
            flockOfDucks.add(rubberDuck);
            flockOfDucks.add(gooseDuck);

            Flock flockOfMallards = new Flock();

            Quackable mallardOne   = duckFactory.createMallardDuck();
            Quackable mallardTwo   = duckFactory.createMallardDuck();
            Quackable mallardThree = duckFactory.createMallardDuck();
            Quackable mallardFour  = duckFactory.createMallardDuck();

            flockOfMallards.add(mallardOne);
            flockOfMallards.add(mallardTwo);
            flockOfMallards.add(mallardThree);
            flockOfMallards.add(mallardFour);

            flockOfDucks.add(flockOfMallards);

            Console.WriteLine("\nDuck Simulator: With Observer");

            Quackologist quackologist = new Quackologist();

            flockOfDucks.registerObserver(quackologist);

            simulate(flockOfDucks);

            Console.WriteLine("The ducks quacked " + QuackCounter.getQuacks() + " times");
        }
        private void Simulate(AbstractDuckFactory duckFactory)
        {
            IQuackable redheadDuck = duckFactory.CreateRedheadDuck();
            IQuackable duckCall    = duckFactory.CreateDuckCall();
            IQuackable rubberDuck  = duckFactory.CreateRubberDuck();
            IQuackable gooseDuck   = new GooseAdapter(new Goose());

            Flock flockOfDucks = new Flock();

            flockOfDucks.Add(redheadDuck);
            flockOfDucks.Add(duckCall);
            flockOfDucks.Add(rubberDuck);
            flockOfDucks.Add(gooseDuck);

            Flock flockOfMallards = new Flock();

            IQuackable mallardOne   = duckFactory.CreateMallardDuck();
            IQuackable mallardTwo   = duckFactory.CreateMallardDuck();
            IQuackable mallardThree = duckFactory.CreateMallardDuck();
            IQuackable mallardFour  = duckFactory.CreateMallardDuck();

            flockOfMallards.Add(mallardOne);
            flockOfMallards.Add(mallardTwo);
            flockOfMallards.Add(mallardThree);
            flockOfMallards.Add(mallardFour);

            flockOfDucks.Add(flockOfMallards);

            Console.WriteLine($"{System.Environment.NewLine}Duck Simulator: With Observer");

            Quackologist quackologist = new Quackologist();

            flockOfDucks.RegisterObserver(quackologist);

            Simulate(flockOfDucks);

            Console.WriteLine($"{System.Environment.NewLine}The ducks quacked {QuackCounter.NumberOfQuacks} times");
        }
Ejemplo n.º 15
0
        private void simulate(AbstractDuckFactory duckFactory)
        {
            IQuack redheadDuck = duckFactory.CreateRedheadDuck();
            IQuack duckCall    = duckFactory.CreateDuckCall();
            IQuack rubberDuck  = duckFactory.CreatRubberDuck();
            IQuack gooseDuck   = new GooseAdapter(new Goose());

            Flock flockOfDucks = new Flock();

            flockOfDucks.Add(redheadDuck);
            flockOfDucks.Add(duckCall);
            flockOfDucks.Add(rubberDuck);
            flockOfDucks.Add(gooseDuck);

            Flock flockOfMallards = new Flock();

            IQuack mallardOne   = duckFactory.CreateMallardDuck();
            IQuack mallardTwo   = duckFactory.CreateMallardDuck();
            IQuack mallardThree = duckFactory.CreateMallardDuck();
            IQuack mallardFour  = duckFactory.CreateMallardDuck();

            flockOfMallards.Add(mallardOne);
            flockOfMallards.Add(mallardTwo);
            flockOfMallards.Add(mallardThree);
            flockOfMallards.Add(mallardFour);

            flockOfDucks.Add(flockOfMallards);

            Console.WriteLine("\r\nDuck Simulator: With Observer");
            Quacklogist quacklogist = new Quacklogist();

            flockOfDucks.RegisterObserver(quacklogist);

            simulate(flockOfDucks);

            Console.WriteLine("The ducks quacked " + QuackCounter.GetQuacks + " times");
        }