public static void DuckStrategyPatternExample() { List <Duck> duckList = new List <Duck>(); //Mountain duck with simple Quack Method LoudRiverDuck river_duck = new LoudRiverDuck( new TerminalDisplay(), new SimpleQuack(), new SimpleFly()); //Mountain duck with different Quack Method MountainDuck mountainDuck = new MountainDuck( new TerminalDisplay(), new LoudQuack(), new SimpleFly()); duckList.Add(river_duck); duckList.Add(mountainDuck); foreach (var duck in duckList) { duck.Display(); duck.Quack(); duck.Fly(); Console.WriteLine(); } }
static void Main(string[] args) { CityDuck cityDuck = new CityDuck(); cityDuck.PerformDisplay(); cityDuck.PerformFly(); cityDuck.PerformQuack(); MountainDuck mountaintDuck = new MountainDuck(); mountaintDuck.PerformDisplay(); mountaintDuck.PerformFly(); mountaintDuck.PerformQuack(); }
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(""); }