设计模式学习笔记2-----策略模式

策略模式:它定义了算法家族,分别封装起来,让她们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。

 

以c#代码为例:

 

//strategy类

//抽象算法类

  abstract class Strategy

  {

    public avstract void AlgorithmInterface();

  }

 

//ConcreteStragegy,封装了具体的算法或行为,继承于Strategy;

 

class ConcreteStrategyA:Strategy

{

  //算法A实现方法

 public override void AlgorithmInterface();

{

     Console.WriteLine("算法A实现")

class ConcreteStrategyB:Strategy

{

  //算法B实现方法

 public override void AlgorithmInterface();

{

     Console.WriteLine("算法B实现")

class ConcreteStrategyC:Strategy

{

  //算法C实现方法

 public override void AlgorithmInterface();

{

     Console.WriteLine("算法C实现")

}

 

 

//Context ,用一个ConcreteStategy来配置,维护一个队Strategy对象的引用

 

class Contxt

{

    Strategy strategy;

 

public Context(Strategy strategy)

{

   this.strategy = strategy;

}

 

public void ContextInterface()

{

  strategy.AlgoritehmInterface();

}

}

 

//客户端代码

 

static void Main(string[] args)

{

   Context context;

//由于实例化不同的策略,所以最终在调用context.ContextInterface()时所得到的结果就不尽相同

   context = new Context(new ConcreteStratehyB())

   context.ContextInterface();

  context = new Context(new ConcreteStratehyC())

   context.ContextInterface();

  context = new Context(new ConcreteStratehyA())

   context.ContextInterface();

  Console.Read();

}

posted @ 2014-05-21 15:41  刘山  阅读(103)  评论(0)    收藏  举报