适用场景:

需要使用大量的if-else语句进行操作时,使用策略模式可以使代码逻辑更清晰

  • 优点:结构清晰,聚合度低,数据安全、
  • 缺点:策略增加,子类也会变多

例子:


public interface CalculateStrategy{
     int calculatePrice(int km);
}

public class BusStrategy implements  CalculateStrategy{
   @Override
      int calculatePrice(int km){
          //公交车的计价方式
       }
}
public class SubwayStrategy implements  CalculateStrategy{
   @Override
      int calculatePrice(int km){
          //地铁的计价方式
       }
}

//扮演Context的角色类
public class TransficCalclate{
     CalculateStrategy mCalc;
     public  TransficCalclate( CalculateStrategy  calculateStrategy){
     mCalc= calculateStrategy;
     }
     public int calculatePrice(int km){
          //计价
           return mClac. calculatePrice(km);
       }
}
//使用时只需传入相应对象,就可以计算出对应价格