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); }
В начало | предыдущая | следующая