Замена условной логики на полиморфизм
Первая часть нашей проблемы -- блок switch. Использовать конструкции switch для манипуляций
с атрибутами других объектов -- плохая идея. Если вам нужно использовать switch,
то он должен использовать только свои данные и ничего больше.
class Rental...
public double getCharge() {
double result = 0;
switch( getMovie().getPriceCode()) {
case Movie.REGULAR:
result += 2;
if( getDaysRented()>2)
result += ( getDaysRented()-2)*1.5;
break;
case Movie.NEW_RELEASE:
result += getDaysRented()*3;
break;
case Movie.CHILDRENS:
result += 1.5;
if( getDaysRented()>3)
result += ( getDaysRented()-3)*1.5;
break;
}
return result;
}
В начало |
предыдущая |
следующая