三、经典模式(21) 策略模式

策略模式(Strategy Pattern)

策略模式用于算法的自由切换和扩展,对应于解决某一问题的一个算法族,允许用户从该算法族中任选一个算法解决某一个问题,同时可以方便更换算法或增加新的算法。
策略模式:定义一系列算法,将每一个算法封装起来,并让它们可以相互替换,策略模式让算法可以独立于使用它的客户变化。

策略模式有3种角色:
1.Context(环境类):环境类是使用算法的类,它在解决某个问题(即实现某个功能)时可以采用多种策略。在环境类中维持一个对抽象策略类的引用实例,用于定义所采用的策略。
2.Strategy(抽象策略类):为所支持的算法声明了抽象方法,是所有策略类的父类,可以是抽象类或具体类。也可以是接口。
3.ConcreteStrategy(具体策略类):覆盖在环境类中定义的抽象策略类对象,使用一种具体的算法实现某个业务功能。

抽象策略类:
abstract class AbstractStrategy
{
  public abstract void Algorithm(); //声明抽象算法
}
具体策略类:
class ConcreteStrategyA:AbstractStrategy
{
  //算法的具体实现
  public override void Algorithm()
  {
    //算法A
  }
}
环境类:
class Context
{
   private AbstractStrategy strategy; //维持一个对抽象策略类的引用
   public void SetStrategy(AbstractStrategy startegy)
   {
     this.strategy = strategy;
   }
   //调用策略类中的算法
   public void Algorithm()
   {
     strategy.Algorithm();
   }
}
客户端代码:
...
Context context = new Context();
AbstractStrategy strategy;
strategy = new ConcreteStrategyA();
context.SetStrategy(strategy);
context.Algorithm();
...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值