1 计算接口
/**
* 计算接口
*/
public interface CalculatorStrategy {
int calculatePrice(int km);
}
2 公交策略
/**
* 公交计算策略
*/
public class BusStrategy implements CalculatorStrategy {
@Override
public int calculatePrice(int km) {//5公里 1块
return km / 5 == 0 ? km / 5 : km / 5 + 1;
}
}
3 地铁策略
/**
* 地铁策略
*/
public class SubwayStrategy implements CalculatorStrategy {
@Override
public int calculatePrice(int km) {
/*
* 6 公里1元
* 超过后3公里1元
*/
if (km <= 6){
return 3;
}else {
return 3 + (km-6)/3;
}
}
}
4 当前策略 扮演Context环境
/**
* 扮演Contex角色,负责当前策略
*/
public class TranficCalculator {
private CalculatorStrategy calculatorStrategy;
public TranficCalculator(CalculatorStrategy calculatorStrategy){
this.calculatorStrategy = calculatorStrategy;
}
//设置改变策略
public void setCalculatorStrategy(CalculatorStrategy calculatorStrategy){
this.calculatorStrategy = calculatorStrategy;
}
//计算
public int calculatePrice(int km){
return calculatorStrategy.calculatePrice(km);
}
}