ivaneeo's blog

自由的力量,自由的生活。

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
现在我运用同样手法处理getFrequentRenterPoints()。重构前的样子如下:
class Movie...
    int getFrequentRenterPoints(int daysRented) {
       if((getPriceCode() == Movie.NEW_RELEASE) && daysRented > 1)
          return 2;
       else
          return 1;
    }

首先我把这个函数移到Price class里头:
class Movie...
    int getFrequentRenterPoints(int daysRented) {
       return _price.getFrequentPoints(daysRented);
    }
class Price...
    int getFrequentRenterPoints(int daysRented) {
       if((getPriceCode() == Movie.NEW_RELEASE) && daysRented > 1)
          return 2;
       else
          return 1;
    }

但是这一次我不把superclass函数声明为abstract。我只是为[新片类型]产生一个覆写函数(override method),并在superclass内留下一个已定义的函数,使它成为一种缺省行为。

class NewReleasePrice
    int getFrequentRenterPoints(int daysRented) {
       return (daysRented > 1) ? 2 : 1;
    }

class Price...
    int getFrequentRenterPoints(int daysRented) {
       return 1;
    }
posted on 2005-08-16 15:50 ivaneeo 阅读(155) 评论(0)  编辑  收藏 所属分类: refactoring-从地狱中重生

只有注册用户登录后才能发表评论。


网站导航: