Exemple #1
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);
            }
Exemple #2
0
        public void Simulate()
        {
            IQuackableObservable mallardDuck = factory.CreateMallardDuck();
            IQuackableObservable redheadDuck = factory.CreateRubberDuck();
            IQuackableObservable duckCall    = factory.CreateDuckCall();
            IQuackableObservable rubberDuck  = factory.CreateRubberDuck();
            IQuackableObservable gooseDuck   = new GooseAdapter(new Goose());


            Flock flockOfDucks = new Flock();

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

            Quackologist q = new Quackologist();

            flockOfDucks.RegisterObserver(q);
            mallardDuck.RegisterObserver(q);



            Console.WriteLine("-----Whole Ducks quack-----\n");

            Simulate(flockOfDucks);



            Console.WriteLine("--------Duck Simulator----------");

            Simulate(mallardDuck);
            Simulate(redheadDuck);
            Simulate(duckCall);
            Simulate(rubberDuck);
            Simulate(gooseDuck);

            Console.WriteLine("Quacks Count:" + QuackCounter.quackCount);
        }
Exemple #3
0
 void Simulate(IQuackableObservable duck)
 {
     duck.Quack();
 }
 public QuackCounter(IQuackableObservable duck)
 {
     this.duck  = duck;
     observable = new Observable(this);
 }
Exemple #5
0
 public void Update(IQuackableObservable observable)
 {
     Console.WriteLine($" {observable} quacked.");
 }
Exemple #6
0
 public Observable(IQuackableObservable observable)
 {
     _observable = observable;
 }
 public void Add(IQuackableObservable quacker)
 {
     quackers.Add(quacker);
 }