static void Main(string[] args)
        {
            /*
             * Design principle: Identify the aspects of your application that vary and separate them from what stays the same.
             *
             * Design principle: Program to an interface, not an implementation.
             *
             * Design principle: Favor composition over inheritance.
             *
             * The Strategy pattern: defines a family of algorithms, encapsulates each one, and makes them interchangeable.
             * Strategy lets the algorithm vary independently from clients that use it.
             */

            Duck mallard = new MallardDuck();

            mallard.display();
            mallard.PerformQuack();
            mallard.PerformFly();


            Duck model = new ModelDuck();

            model.display();
            model.PerformQuack();
            model.PerformFly();
            model.SetFlyBehavior(new FlyRocketPowered());
            model.PerformFly();

            Console.ReadKey();
        }
        static void Main(string[] args)
        {
            var model = new ModelDuck();

            model.PerformFly();
            model.SetFlyBehavior(new FlySoFast());
            model.PerformFly();
            Console.ReadLine();
        }
示例#3
0
        static void Main()
        {
            Duck mallard = new MallardDuck();

            mallard.PerformQuack();
            mallard.PerformFly();

            Duck model = new ModelDuck();

            model.PerformFly();
            model.SetFlyBehavior(new FlyRocketPowered());
            model.PerformFly();
        }
示例#4
0
        static void Main(string[] args)
        {
            var mallard = new MallardDuck();

            mallard.PerformFly();
            mallard.PerformQuack();

            var modelDuck = new ModelDuck();

            modelDuck.PerformQuack();
            modelDuck.PerformFly();
            modelDuck.SetFlyBehavior(new FlyRocketPowered());
            modelDuck.PerformFly();
        }
示例#5
0
        static void Main(string[] args)
        {
            Duck mallard = new MallardDuck();

            mallard.PerformQuack();
            mallard.PerformFly();

            Duck model = new ModelDuck();

            model.PerformFly();
            model.SetFlyBehavior(new FlyRocketPowered());
            model.PerformFly();

            Console.ReadKey();
        }
示例#6
0
        private static void MiniDuckSimulator()
        {
            var mallard = new MallardDuck();

            mallard.Display();
            mallard.PerformFly();
            mallard.PerformQuack();

            var model = new ModelDuck();

            model.Display();
            model.PerformFly();
            model.PerformQuack();
            Console.WriteLine("---------\r\n>>> powered by rocket.");
            model.SetFlyBehavior(new FlyRocketPowered());
            model.PerformFly();
        }
示例#7
0
        static void Main(string[] args)
        {
            Duck Mallard = new MallardDuck();

            Mallard.Display();
            Mallard.PerformQuack();
            Mallard.PerformFly();

            Duck Model = new ModelDuck();

            Console.WriteLine();
            Model.Display();
            Model.PerformQuack();
            Model.PerformFly();
            Model.SetFlyBehavior(new FlyRocketPowered());
            Model.PerformFly();

            Duck Redhead = new RedheadDuck();

            Console.WriteLine();
            Redhead.Display();
            Redhead.PerformQuack();
            Redhead.PerformFly();

            Duck Rubber = new RubberDuck();

            Console.WriteLine();
            Rubber.Display();
            Rubber.PerformQuack();
            Rubber.PerformFly();

            Duck Decoy = new DecoyDuck();

            Console.WriteLine();
            Decoy.Display();
            Decoy.PerformQuack();
            Decoy.PerformFly();
        }