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