策略模式
介绍:它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户
1.定义抽象算法类
1 //抽象算法类 2 abstract class strategy 3 { 4 //算法方法 5 public abstract void AlgorithmInterface(); 6 }
2.定义具体的算法去实现抽象类
1 //具体算法A 2 class ConcreteStrategyA : strategy 3 { 4 //算法A实现方法 5 public override void AlgorithmInterface() 6 { 7 Console.WriteLine("我是算法A的实现方法!"); 8 } 9 } 10 //具体算法B 11 class ConcreteStrategyB : strategy 12 { 13 //算法B实现方法 14 public override void AlgorithmInterface() 15 { 16 Console.WriteLine("我是算法B的实现方法!"); 17 } 18 } 19 //具体算法C 20 class ConcreteStrategyC : strategy 21 { 22 //算法C实现方法 23 public override void AlgorithmInterface() 24 { 25 Console.WriteLine("我是算未能C的实现方法!"); 26 } 27 }
3.上下文,类中有算法类的属性,有一个调用算法类的方法
1 class Context 2 { 3 private strategy strate; 4 public Context(strategy strate) 5 { 6 this.strate = strate; 7 } 8 public void ContextInterface() 9 { 10 strate.AlgorithmInterface(); 11 } 12 }
4.客户端调用
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 //获取上下文类 6 Context context = new Context(new ConcreteStrategyA()); 7 context.ContextInterface(); 8 } 9 }