最近正在处理一项任务,我遇到了一个问题,我遇到了问题,问题在于switch语句如下:
private static final Double FIRST_HOUR_COST = 1.0;
private static final Double SECOND_HOUR_COST = 2.0;
private static final Double CONVERSION_RATE = 1.5
@Override
public double calculateReservationCost(Reservation reservation)
{
int hours = DateUtils.hoursDifference(reservation.getStartTime(), reservation.getStopTime()) + 1;
switch(hours)
{
case 1:
return FIRST_HOUR_COST;
case 2:
return FIRST_HOUR_COST + SECOND_HOUR_COST;
default:
return FIRST_HOUR_COST +
SECOND_HOUR_COST +
countEachNextHour(SECOND_HOUR_COST, 2, hours);
}
}
我尝试了可以在堆栈上找到的所有解决方案,但无法根据我的需要进行调整(将函数映射为值,单个等式等)。希望有任何其他方法可以在不违反任何OOP规则的情况下以有效的方式替换它。
答案 0 :(得分:0)
我将Switch语句替换为Strategy模式。这样一来,您以后就可以添加新的策略,而无需花费很长的切换时间。