一、策略模式定义:
策略模式(Strategy)定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户。
分析:
封装的算法本身是一种策略,重要的是这些算法随时可能互相替换的,这就是变化点,而封装变化点是面向对象的一种重要的思维方式。策略模式定义的这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合。
二、UML类图:
三、策略模式的基本代码:
class Program { static void Main(string[] args) { Contex context; context = new Contex(new ConcreteStrategyA()); context.ContexInterface(); context = new Contex(new ConcreteStrategyB()); context.ContexInterface(); Console.Read(); } } abstract class Strategy { public abstract void AlgorithmInterface(); } class ConcreteStrategyA : Strategy { public override void AlgorithmInterface() { Console.WriteLine("算法A实现"); } } class ConcreteStrategyB : Strategy { public override void AlgorithmInterface() { Console.WriteLine("算法B实现"); } } class ConcreteStrategyC : Strategy { public override void AlgorithmInterface() { Console.WriteLine("算法C实现"); } } class Contex { Strategy strategy; public Contex(Strategy strategy) { this.strategy = strategy; } public void ContexInterface() { strategy.AlgorithmInterface(); } }