设计模式:策略模式
策略模式(Strategy):它定义了算法家族,分别封装起来,让它们这件可以相互替换,此模式让算法的变化,不会影响到使用算法的客户。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
namespace StrategyDesignPattern { //抽象算法类 public abstract class Strategy { //算法方法 public abstract void AlgorithmInterface(); } //具体算法A public class ConcreateStrategyA:Strategy { //算法A实现方法 public override void AlgorithmInterface() { Console.WriteLine("算法A实现"); } } //具体算法B public class ConcreateStrategyB : Strategy { //算法A实现方法 public override void AlgorithmInterface() { Console.WriteLine("算法B实现"); } } //上下文 public class Context { Strategy Strategy; public Context(Strategy strategy) { Strategy = strategy; } //上下文接口 public void ContextInterface() { Strategy.AlgorithmInterface(); } } }
测试代码:
public void StrategyTest() { Context context; context = new Context(new ConcreateStrategyA()); context.ContextInterface(); context = new Context(new ConcreateStrategyB()); context.ContextInterface(); }
策略与简单工厂结合:
public Context(string type) { switch(type) { case "A": Strategy = new ConcreateStrategyA(); break; case "B": Strategy = new ConcreateStrategyB(); break; } }