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(); }
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(""); }