策略模式
策略模式侧重于选择,例如:支付方式,我们商品购物时,选择不同的渠道即可支付宝,微信,京东等。 主要解决。在有多种支付渠道相似的情况下,使用 if…else 所带来的复杂和难以维护。
优点
- 算法可以自由切换。
- 避免使用多重条件判断。
- 扩展性良好。
缺点
- 策略类会增多。
- 所有策略类都需要对外暴露。
DEMO
public interface IStrategy {
void pay();
}
public class WeChartPayStrategy implements IStrategy{
@Override
public void pay() {
System.out.println("微信支付");
}
}
public class ZfbPayStrategy implements IStrategy{
@Override
public void pay() {
System.out.println("支付宝支付");
}
}
public class OtherPayStrategy implements IStrategy{
@Override
public void pay() {
System.out.println("其它支付渠道");
}
}
public class Context {
private IStrategy strategy;
public Context(IStrategy strategy){
this.strategy = strategy;
}
public void executeStrategy(){
strategy.pay();
}
}
执行类,选择不同的支付策略。
public class Client {
public static void main(String[] args) {
new Context(new OtherPayStrategy()).executeStrategy();
new Context(new ZfbPayStrategy()).executeStrategy();
new Context(new WeChartPayStrategy()).executeStrategy();
}
}