private void CreateMallardDuckWithRocketAndSqueak() { Duck mallardDuck = new MallardDuck(); mallardDuck.SetFlyBehavior(new FlyRocketPowered()); mallardDuck.SetQuackBehavior(new Squeak()); mallardDuck.Display(); mallardDuck.PerformFly(); mallardDuck.PerformQuack(); }
//Design principle //Identify the aspects of your //application that vary and separate //them from what stays the same. //Design principle //Program to an interface (abstract class/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. static void Main(string[] args) { MallardDuck mallardDuck = new MallardDuck(); mallardDuck.PerformFly(); mallardDuck.SetFlyBehavior(new FlyRocketPowered()); mallardDuck.PerformFly(); mallardDuck.PerformQuack(); mallardDuck.Display(); mallardDuck.Swim(); }
static void Main(string[] args) { Duck myDuck = new MallardDuck(); myDuck.Display(); myDuck.PerformFly(); myDuck.PerformQuack(); myDuck.SetFlyBehavior(new FlyWithWingsTypeTwo()); myDuck.SetQuackBehavior(new NoQuack()); myDuck.PerformFly(); myDuck.PerformQuack(); myDuck = new RubberDuck(); myDuck.Display(); myDuck.PerformFly(); myDuck.PerformQuack(); myDuck.SetFlyBehavior(new FlyWithJet()); myDuck.SetQuackBehavior(new QuackLikeMallardDuck()); myDuck.PerformFly(); myDuck.PerformQuack(); }