Beispiel #1
0
 public Duck(IFly f, IQuack q, IWalk w, ISwim s)
 {
     _fly   = f;
     _quack = q;
     _walk  = w;
     _swim  = s;
 }
Beispiel #2
0
 public ADuck()
 {
     _fly   = new DucksFly();
     _quack = new DucksQuack();
     _swimm = new DucksSwimm();
     _go    = new DucksGo();
 }
Beispiel #3
0
 protected Duck()
 {
     _fly   = new FlyClass();
     _quack = new QuackClass();
     _walk  = new WalkClass();
     _swim  = new SwimClass();
 }
Beispiel #4
0
 public ADuck(IFly f, IQuack q, ISwimm s, IGo g)
 {
     _fly   = f;
     _quack = q;
     _swimm = s;
     _go    = g;
 }
Beispiel #5
0
 protected BaseDuck(IFly fly, IQuack quack, ISwim swim, IWalk walk, IName name)
 {
     _fly   = fly;
     _quack = quack;
     _swim  = swim;
     _walk  = walk;
     _name  = name;
 }
Beispiel #6
0
        static void Main(string[] args)
        {
            DuckTypingProxyFactory factory = new DuckTypingProxyFactory();
            Quack  cuacky = new Quack();
            IQuack proxy  = factory.GenerateProxy <IQuack>(cuacky);

            Speak(proxy);
            Console.ReadLine();
        }
Beispiel #7
0
        public void RegisterObserver(IObserver observer)
        {
            IEnumerator <IQuack> iterator = quackers.GetEnumerator();

            while (iterator.MoveNext())
            {
                IQuack duck = iterator.Current;
                duck.RegisterObserver(observer);
            }
        }
Beispiel #8
0
        public void Quack()
        {
            //Iterator pattern
            IEnumerator <IQuack> iterator = quackers.GetEnumerator();

            while (iterator.MoveNext())
            {
                IQuack quacker = iterator.Current;
                quacker.Quack();
            }
        }
        static void Main(string[] args)
        {
            #region Factory, Flock, and Duck Creation
            AbstractDuckFactory  duckFactory  = new CountingDuckFactory();
            AbstractGooseFactory gooseFactory = new GooseFactory();

            IQuack redhead = duckFactory.CreateRedheadDuck();
            IQuack call    = duckFactory.CreateDuckCall();
            IQuack rubber  = duckFactory.CreateRubberDuck();
            IQuack goose   = gooseFactory.CreateGoose();

            Flock duckFlock = new Flock();
            duckFlock.Add(redhead);
            duckFlock.Add(call);
            duckFlock.Add(rubber);
            duckFlock.Add(goose);

            IQuack mallard1 = duckFactory.CreatMallardDuck();
            IQuack mallard2 = duckFactory.CreatMallardDuck();
            IQuack mallard3 = duckFactory.CreatMallardDuck();
            IQuack mallard4 = duckFactory.CreatMallardDuck();

            Flock mallardFlock = new Flock();
            mallardFlock.Add(mallard1);
            mallardFlock.Add(mallard2);
            mallardFlock.Add(mallard3);
            mallardFlock.Add(mallard4);

            duckFlock.Add(mallardFlock);
            #endregion

            DuckWatcher duckWatcher = new DuckWatcher();
            duckFlock.Subscribe(duckWatcher);

            Console.WriteLine("\r\n***DUCK SIMULATOR: WHOLE FLOCK***");
            Simulate(duckFlock);

            Console.WriteLine("The ducks quacked {0} times.  Thank you for playing.",
                              QuackCounter.Quacks);

            Console.WriteLine("\r\n***DUCK SIMULATOR: MALLARD FLOCK***");
            Simulate(mallardFlock);

            Console.WriteLine("The ducks quacked {0} times.  Thank you for playing.",
                              QuackCounter.Quacks);
            Console.ReadLine();
        }
Beispiel #10
0
        private void listaquack_SelectedIndexChanged(object sender, EventArgs e)
        {
            switch (listaquack.SelectedIndex)
            {
            case 0:
                quack = new Quack();
                quack.Typesound();
                break;

            case 1:

                break;

            case 2:
                squeak = new Squeak();
                squeak.Typesound();

                break;
            }
        }
Beispiel #11
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");
        }
 // the magic of polymorphism
 static void Simulate(IQuack duck)
 {
     duck.Quack();
 }
Beispiel #13
0
 // allow users to change quack behavior at runtime (strategy pattern)
 public void SetQuack(IQuack quack)
 {
     this.quack = quack;
 }
Beispiel #14
0
        protected IQuack quack; // strategy pattern

        #endregion Fields

        #region Constructors

        // strategy pattern
        public Duck(IQuack quack)
        {
            this.quack = quack;
        }
Beispiel #15
0
 public ADuck(IQuack q)
 {
     _quack = q;
 }
Beispiel #16
0
 static void Speak(IQuack bird)
 {
     Console.WriteLine(bird.Name);
     bird.Talk();
 }
Beispiel #17
0
 public QuackCounter(IQuack duck)
 {
     this.duck = duck;
     observable = new Observable(this);
 }
Beispiel #18
0
 public void SetQuackingInterface(IQuack quack)
 {
     Quack = quack;
 }
Beispiel #19
0
 public void Add(IQuack child)
 {
     children.Add(child);
 }
Beispiel #20
0
 // the magic of polymorphism
 static void Simulate(IQuack duck)
 {
     duck.Quack();
 }
Beispiel #21
0
 protected BaseDuck(IFly fly, IQuack quack, ISwim swim)
 {
     _fly   = fly;
     _quack = quack;
     _swim  = swim;
 }
Beispiel #22
0
 public BaseDuck(IFly fly, IQuack quack, ISwim swim)
 {
     _fly   = fly;
     _quack = quack;
     _swim  = swim;
 }
Beispiel #23
0
 public QuackCounter(IQuack duck)
 {
     this.duck  = duck;
     observable = new Observable(this);
 }
Beispiel #24
0
 public CustomDuck(IFly _fly, IQuack _quack, ISwim _swim)
 {
     flyAction   = _fly;
     quackAction = _quack;
     swimAction  = _swim;
 }
Beispiel #25
0
 public Duck(IFly _F, IQuack _Q)
 {
     FlyBehaviour   = _F;
     QuackBehaviour = _Q;
 }
Beispiel #26
0
 public void Add(IQuack child)
 {
     children.Add(child);
 }
Beispiel #27
0
 public Duck(IFly fly, IQuack quack, ISwim swim) : base(fly, quack, swim)
 {
 }
Beispiel #28
0
 /// <summary>
 /// use combination to replace inherit
 /// </summary>
 /// <param name="quack"></param>
 public void SetQuack(IQuack quack)
 {
     this.quack = quack;
 }
Beispiel #29
0
 public void Add(IQuack quacker)
 {
     quackers.Add(quacker);
 }
Beispiel #30
0
 /// <summary>
 /// 模型鴨
 /// </summary>
 public ModelDuck(IFly fly, IQuack quack)
     : base(fly, quack)
 {
 }
Beispiel #31
0
 public Duck(IFly fly, IQuack quack)
 {
     Fly   = fly;
     Quack = quack;
 }
Beispiel #32
0
 public QuackCounter(IQuack duck)
 {
     this.duck = duck;
 }
Beispiel #33
0
 public void setQ(IQuack quack)
 {
     _quack = quack;
 }
Beispiel #34
0
 public Duck(IFly _fly, IQuack _quack, IWalk _walk) : base(_fly, _quack, _walk)
 {
 }
 public Duck(IDisplay display, IQuack quack)
 {
     _display = display;
     _quack   = quack;
 }