在很多的计算场合,我需要在不同的时间、地方,用不同的算法计算数据;那么就引入了我们的今天要讲的策略设计模式;什么是策略设计模式?就是定义了算法的家族,分别封装起来,让他们之前可以相互的进行替换,此模式让算法的变化,不影响使用算法的客户端;
Strategy代码如下:
abstract class Strategy { //算法方法 public abstract void AlgorithmInterface(); }
ConcreteStrategy是对Strategy类的继承并实现了具体的算法,ConcreteStrategyA类代码(其他的类代码相似)如下:
<pre name="code" class="csharp">public class ConcreteStrategyA:Strategy { public override void AlgorithmInterface() { Console.WriteLine("算法A的具体实现"); } }
Context类的具体代码:
public class Context { Strategy strategy; //初始化具体的策略对象 public Context(Strategy strategy) { this.strategy=strategy; } //根据具体的策略对象调用其算法的方法 public void ContextInterface() { strategy.AlgorithmInterface(); } }
客户端代码:
static void main(string[] arg) { Context context; context=new Context(new ConcreteStrategyA()); context.ContextInterface(); //其他的代码类似 }
咱们在实际的项目开发中,我们可以用把简单工厂模式和这个模式结合,把客户端判断的逻辑移动到工厂类中;减少客户端知道的类,后续在运维的时候,更加方便。
时间: 2024-10-10 15:36:15