定义
定义了一系列算法或逻辑或相同意义的操作,并封装起来,而且可互相替换(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(); } } ```