定义

  • 定义了一系列算法或逻辑或相同意义的操作,并封装起来,而且可互相替换(java中应用广泛)。

    场景

  • 例如:做一个不同会员打折粒度不同的三种策略,初级、中级、高级。

  • 例如:支付模块,微信支付、宝支付…

    特点

  • 优:1自由切换2避免过多逻辑判断3扩展好。

  • 缺:1策略类增加2策略类都需要向外暴露。

    实现

    ```java //策略模式,定义抽象方法 public class PayStrategy{ //支付逻辑方法 abstract void logicInterface(); }

// class PayStrategyA extends PayStrategy{ void logicInterface(){ sout(“WX支付”); } } class PayStrategyB extends PayStrategy{ void logicInterface(){ sout(“ZFB支付”); } } //上下文维护算法策略 class Context{ PayStrategy ps; public Context(PayStrategy ps){ this.ps = ps; } public void logicInterface(){ ps.logicInterface } }

//测试 class Client{ public static void main(String[] args){ Context context; context = new Context(new PayStrategyA()); context.logicInterface(); context = new Context(new PayStrategyA()); context.logicInterface(); } } ```