首页 > 代码库 > 策略模式的详情

策略模式的详情

       在很多的计算场合,我需要在不同的时间、地方,用不同的算法计算数据;那么就引入了我们的今天要讲的策略设计模式;什么是策略设计模式?就是定义了算法的家族,分别封装起来,让他们之前可以相互的进行替换,此模式让算法的变化,不影响使用算法的客户端;

技术分享

       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();
	//其他的代码类似
}
    咱们在实际的项目开发中,我们可以用把简单工厂模式和这个模式结合,把客户端判断的逻辑移动到工厂类中;减少客户端知道的类,后续在运维的时候,更加方便。


策略模式的详情