最近在处理一项任务时,我遇到了一个问题,这个问题与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规则的情况下以有效的方式替换它。
发布于 2018-06-20 19:37:54
我会将Switch语句替换为Strategy模式。这将允许您在未来添加新策略,而无需使用冗长的switch语句。
https://stackoverflow.com/questions/50889196
复制相似问题