예제 #1
0
        static void Main(string[] args)
        {
            IDog  dog  = new WildDog();
            IDuck duck = new WildDuck();

            dog.Bark();
            duck.Quack();
            dog.Jump();
            duck.Fly();
            DuckAdapter adapterDuck = new DuckAdapter(dog);

            adapterDuck.Quack();
            adapterDuck.Fly();
        }
예제 #2
0
파일: interfaces.cs 프로젝트: JeroenBL/demo
        public static void Main(string[] args)
        {
            // First approach (DI and base class of type duck)
            Console.WriteLine("First approach using base class");

            Console.WriteLine("WildDuck using base class");
            var wildDuck = new WildDuck();

            wildDuck.Fly();
            wildDuck.Quack();
            Console.WriteLine("");

            Console.WriteLine("MountainDuck using base class");
            var mountainDuck = new MountainDuck();

            mountainDuck.Fly();
            mountainDuck.Quack();
            Console.WriteLine("");

            Console.WriteLine("RubberDuck using base class");
            var RubberDuck = new RubberDuck();

            RubberDuck.Fly();
            RubberDuck.Quack();
            Console.WriteLine("");

            //
            // Better approach
            Console.WriteLine("Better approach using interfaces");
            //

            // Create fly behaviours
            IFlyable flyingNormal = new FlyingNormal();
            IFlyable flyingHigh   = new FlyingHigh();
            IFlyable wontFly      = new WontFly();

            // Create quack behaviours
            IQuackable quackingLoud = new QuackingLoud();
            IQuackable squeek       = new Squeak();

            // Create wildDuck (flying normal, quacking loud)
            Console.WriteLine("WildDuck-Interface (flying normal, quacking loud");
            var betterWildDuck = new BetterDuckClass(flyingNormal, quackingLoud);

            betterWildDuck.Fly();
            betterWildDuck.Quack();
            Console.WriteLine("");

            // Create mountainDuck (flying high, quacking loud)
            Console.WriteLine("MountainDuck-Interface (flying high, quacking loud");
            var betterMountainDuck = new BetterDuckClass(flyingHigh, quackingLoud);

            betterMountainDuck.Fly();
            betterMountainDuck.Quack();
            Console.WriteLine("");

            // Create rubberDuck (won't fly, squeeks)
            Console.WriteLine("RubberDuck-Interface (won't fly, squeeks");
            var betterRubberDuck = new BetterDuckClass(null, squeek);

            betterRubberDuck.Quack();
            Console.WriteLine("");
        }