ivaneeo's blog

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

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks

          常用鏈接

          留言簿(34)

          我參與的團隊

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          現在我運用同樣手法處理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 閱讀(160) 評論(0)  編輯  收藏 所屬分類: refactoring-從地獄中重生
          主站蜘蛛池模板: 连平县| 永和县| 安化县| 齐河县| 正蓝旗| 仁化县| 涿州市| 张家港市| 奇台县| 逊克县| 南京市| 冕宁县| 忻城县| 云龙县| 拉孜县| 蒙山县| 从化市| 宜州市| 昭平县| 镇平县| 白山市| 安庆市| 岑溪市| 融水| 彝良县| 牙克石市| 陕西省| 葫芦岛市| 玉溪市| 鲜城| 安乡县| 肃南| 威海市| 江孜县| 疏勒县| 石景山区| 神池县| 南乐县| 资兴市| 鱼台县| 民乐县|