鸭子基类 将行为封装起来
class Duck { protected IFlyBehavior flyBehavior; protected IQuackBehavior quackBehavior; public void PerformQuack() { quackBehavior.Quack(); } public void PerformFly() { flyBehavior.Fly(); } }
飞行行为基类
interface IFlyBehavior { void Fly(); }
鸭鸣行为基类
interface IQuackBehavior { void Quack(); }
不同行为的飞行
class FlyNoWay : IFlyBehavior { public void Fly() { Console.WriteLine("不会飞"); } }
public class FlyWithWings : IFlyBehavior { public void Fly() { Console.WriteLine("飞"); } }
鸭鸣是同样的做法。
子类鸭子
class MallardDuck:Duck { public MallardDuck() { quackBehavior = new MuteQuack(); flyBehavior = new FlyWithWings(); } }
主函数的调用方式
class Program { static void Main(string[] args) { MallardDuck mallardDuck = new MallardDuck(); mallardDuck.PerformFly(); mallardDuck.PerformQuack(); Console.ReadKey(); } }
扫描二维码关注公众号,回复:
2998482 查看本文章