strategy策略模式

      strategy策略模式,策略即算法,策略模式是对算法的封装,把使用算法的使用者和算法本身分割开,分派给不同的对象管理。一系列的算法封装到一系列的策略类里面,作为一个抽象策略类的子类或接口的实现类。换句话说:就是准备一组算法,当条件或环境变化,需要不同的算法时,则向算法的使用者注册该算法,使得其可以在使用者的内部使用该算法。
      传统的作法,是使用if else语句在方法中实现并选择不同的算法(很多使用面向对象语言编写程序的人还是停留在结构化的思维定势),这与面向对象的开闭原则是不符的。在大量if else的代码环境下是比较难以维护排错的和扩展的,使用策略模式也可以提高代码复用率,并且使用者不必涉及到任何的算法代码,只涉及到算法的输入输出值。当要添加算法时,只要写一个封装该算法的类并向使用者注册即可。
      另一种面向对象思想的作法,就是实现使用者的不同子类,有多少策略就派生出多少个子类。而这样会导致子类的膨胀。可能会出现不必要的复杂结构,代码复用性也做得不好。

public interface Strategy {
  public String mystrategy(String input);
}
public class StrategyA implements Strategy{
  public String mystrategy(){/*...*/return "a";}
}
public class StrategyB implements Strategy{
  public String mystrategy(){/*...*/return "b";}
}
public class Myclass{
  private Strategy s;
  public Myclass(){s=new StrategyA();}
  public setStrategy(Strategy s){this.s=s;}
  public useStrategy(){System.out.println(s.mystrategy());}
}
public class Main(){
  public static void main(String args[]){
    Myclass mc = new Myclass();
    mc.setStrategy(new StrategyB());
    mc.useStrategy();
  }
}

可以与工厂模式结合使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值