策略模式

策略模式

策略模式侧重于选择,例如:支付方式,我们商品购物时,选择不同的渠道即可支付宝,微信,京东等。 主要解决。在有多种支付渠道相似的情况下,使用 if…else 所带来的复杂和难以维护。

优点

  1. 算法可以自由切换。
  2. 避免使用多重条件判断。
  3. 扩展性良好。

缺点

  1. 策略类会增多。
  2. 所有策略类都需要对外暴露。

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();
    }

}

文章作者: 凌云
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 凌云 !
  目录