Замена условной логики на полиморфизм

Первая часть нашей проблемы - блок 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;
    }

В начало | предыдущая | следующая