<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ivaneeo's blog

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

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
    現(xiàn)在我要對getCharge()實(shí)施Move Method(142).下面是重構(gòu)前的代碼:
    class Movie...
    double getCharge(int daysRented) {
        double result = 0;
        switch(getPriceCode()) {   //取得影片出租價(jià)格
              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;
    }

    搬移動作很簡單。下面是重構(gòu)后的代碼:
    class Movie...
        double getCharge(int daysRented) {
           return _price.getCharge(daysRented);
        }


    class Price...
       double getCharge(int daysRented) {
        double result = 0;
        switch(getPriceCode()) {   //取得影片出租價(jià)格
              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;
    }

    搬移之后,我就可以開始運(yùn)用Replace Conditional with Polymorphism(255)了。
    下面是重構(gòu)前的代碼:
    class Price...
       double getCharge(int daysRented) {
        double result = 0;
        switch(getPriceCode()) {   //取得影片出租價(jià)格
              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;
    }

    我的作法是一次取出一個(gè)case分支,在相應(yīng)的class內(nèi)建一個(gè)覆寫函數(shù)(override method)。先從RegularPrice開始:
    class RegularPrice...
        double getCharge(int daysRented) {
           double result = 2;
           if(daysRented > 2)
              result += (daysRented - 2) * 1.5;
           return result;
        }

    class ChildernsPrice...
        double getCharge(int daysRented) {
           double result = 1.5;
           if(daysRented > 3)
              result += (daysRented - 3) * 1.5;
           return result;
        }

    class NewReleasePrice...
    double getCharge(int daysRented) {
           return daysRented * 3;
        }

    處理完所有case分支之后,我就把Price.getCharge()聲明為abstract:
    class Price...
        abstract double getCharge(int daysRented);
    posted on 2005-08-15 17:21 ivaneeo 閱讀(167) 評論(0)  編輯  收藏 所屬分類: refactoring-從地獄中重生
    主站蜘蛛池模板: 久青草国产免费观看| 2021国内精品久久久久精免费| 国产性爱在线观看亚洲黄色一级片 | 久久久久亚洲AV片无码下载蜜桃 | 久久影院亚洲一区| 88xx成人永久免费观看| 亚洲国产成人无码AV在线 | 激情五月亚洲色图| 国产AV无码专区亚洲AV漫画| 无码乱肉视频免费大全合集| 曰韩无码AV片免费播放不卡| 亚洲白嫩在线观看| 亚洲国产精品毛片av不卡在线| 57pao一国产成永久免费| 黄色一级视频免费| 亚洲免费人成视频观看| 精品亚洲成α人无码成α在线观看 | 日本免费一区二区三区| 男女猛烈xx00免费视频试看| 亚洲黄色网站视频| 国产亚洲日韩在线三区| 永久免费看mv网站入口| aⅴ免费在线观看| 成年女人A毛片免费视频| 亚洲AV无码专区在线观看成人 | 成在线人视频免费视频| 亚洲自偷自偷在线成人网站传媒| 亚洲AV综合色区无码一区爱AV| 国产成人无码区免费A∨视频网站 国产成人涩涩涩视频在线观看免费 | 337p日本欧洲亚洲大胆裸体艺术 | 亚洲国产综合无码一区二区二三区| 51精品视频免费国产专区| 亚洲国产免费综合| 自拍偷自拍亚洲精品偷一| 亚洲一区二区三区免费视频| 亚洲AV成人片色在线观看高潮| 亚洲综合色成在线播放| 国产免费一区二区三区VR| 成年性羞羞视频免费观看无限| 57pao国产成视频免费播放 | 免费看污成人午夜网站|