还是那几句话:
学无止境,精益求精
十年河东,十年河西,莫欺少年穷
学历代表你的过去,能力代表你的现在,学习代表你的将来
废话不多说,直接进入正题:
首先按照大话设计模式的解释,在这里也总结下策略模式的概念:它定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户!
具体的实现代码为:
namespace SJMS { /// <summary> /// 抽象算法类 /// </summary> public abstract class Strategy { /// <summary> /// 抽象算法 /// </summary> public abstract void AlgorithmInterface(); } /// <summary> /// 具体算法A /// </summary> public class ConcreteStrategyA : Strategy { /// <summary> /// 算法A的具体实现方法 /// </summary> public override void AlgorithmInterface() { Console.WriteLine("算法A的具体方法"); } } /// <summary> /// 具体算法B /// </summary> public class ConcreteStrategyB : Strategy { /// <summary> /// 算法B的具体实现方法 /// </summary> public override void AlgorithmInterface() { Console.WriteLine("算法B的具体方法"); } } /// <summary> /// 抽象算法C /// </summary> public class ConcreteStrategyC : Strategy { /// <summary> /// 算法C的具体实现方法 /// </summary> public override void AlgorithmInterface() { Console.WriteLine("算法C的具体方法"); } } public class Context { private Strategy _strategy; /// <summary> /// 用于维护抽象算法类对象 /// </summary> public Context(Strategy strategy) { this._strategy = strategy; } /// <summary> /// 根据维护的不同对象,调用对应的算法 /// </summary> public void ContextInterface() { _strategy.AlgorithmInterface(); } } }