標籤:src OLE 設計 code static class main ima com
鴨子基類 將行為封裝起來
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(); } }
HeadFirst設計模式---策略模式 C#實現