01.策略模式-上篇
原文地址:01.策略模式-上篇
概述:
策略模式:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
1.定义飞行行为接口
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 策略模式 { public interface IFlyBehavior { void Fly(); } }
2.定义飞行行为,继承飞行行为接口
(1)FlyNoWay不会飞
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 策略模式 { public class FlyNoWay:IFlyBehavior { public void Fly() { Console.WriteLine("I can't fly"); } } }
(2)FlyWithWings会飞,用翅膀
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 策略模式 { public class FlyWithWings:IFlyBehavior { public void Fly() { Console.WriteLine("I'm flying!!"); } } }
3.定义绿头鸭MallarDuck,继承Duck类
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 策略模式 { public class MallarDuck:Duck { public MallarDuck() { base.iFlyBehavior = new FlyWithWings(); } public override void Display() { Console.WriteLine("I'm a real Mallard duck"); } } }
4.主程序
using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptography.X509Certificates; using System.Text; using System.Threading.Tasks; namespace 策略模式 { class Program { static void Main(string[] args) { Duck mallarDuck = new MallarDuck(); mallarDuck.PerformFly(); Console.ReadKey(); } } }