Замена условной логики на полиморфизм
Первая часть нашей проблемы - блок 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;
}
В начало |
предыдущая |
следующая