| Рефакторинг, первый пример | Страница 34 |
Замена условной логики на полиморфизм
Первая часть нашей проблемы -- блок 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;
}
Оглавление | << страница 32 | страница 35 >>