适用场景:
需要使用大量的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);
}
}
//使用时只需传入相应对象,就可以计算出对应价格