<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
    搬移[金額計(jì)算]代碼
    觀察amountFor()時(shí),我發(fā)現(xiàn)這個(gè)函數(shù)使用了來自Rental class的信息,卻沒有使用來自Customer class的信息.

    class Customer...
    public double amountFor(Rental aRental) {
        double result = 0;
        switch(aRental.getMovie().getPriceCode()) {   //取得影片出租價(jià)格
              case Movie.REGULAR:   //普通片
                 result+= 2;
                 if(aRental.getDaysRented() > 2)
                    result+= (aRental.getDaysRented() - 2) * 1.5;
                 break;
              case Movie.NEW_RELEASE:   //新片
                 result+= aRental.getDaysRented() * 3;
                 break;
              case Movie.CHILDRENS:   //兒童片
                 result+= 1.5;
                 if(aRental.getDaysRented() > 3)
                    result+= (aRental.getDaysRented() - 3) * 1.5;
                 break;
           }
        return result;
    }
    這立刻使我懷疑它是否被放錯(cuò)了位置.大多數(shù)情況下,函數(shù)應(yīng)該放在它使用的數(shù)據(jù)的所屬object(或說class)內(nèi),所以amountFor()應(yīng)該移 到Rental class去.為了這么做,我要運(yùn)用Move Method(142).首先把代碼拷貝到Rental class內(nèi),調(diào)整代碼使之適應(yīng)新家,然后重新編譯.下面這樣:

    class Rental...
    double getCharge() {
        double result = 0;
        switch(getMovie().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è)例子里,[適應(yīng)新家]意味去掉參數(shù).此外,我還要在搬移的同時(shí)變更函數(shù)名稱.

    現(xiàn)在我可以測試新函數(shù)是否正常工作.只要改變Customer.amountFor()函數(shù)內(nèi)容,使它委托(delegate)新函數(shù)即可:

    class Customer...
        private double amountFor(Rental aRental) {
           return aRental.getCharge();
        }
    posted on 2005-08-15 11:03 ivaneeo 閱讀(189) 評(píng)論(0)  編輯  收藏 所屬分類: refactoring-從地獄中重生
    主站蜘蛛池模板: 亚洲精品自产拍在线观看动漫| 亚洲字幕在线观看| 亚洲午夜AV无码专区在线播放| 在线日韩日本国产亚洲| 亚洲精品美女在线观看播放| 福利片免费一区二区三区| 99久久精品毛片免费播放| 成年性午夜免费视频网站不卡| 亚洲成?Ⅴ人在线观看无码| 亚洲黑人嫩小videos| 免费一级特黄特色大片| 免费黄色福利视频| 亚洲日韩在线观看| 中文在线免费观看| 亚洲成年看片在线观看| WWW免费视频在线观看播放| 国产美女做a免费视频软件| 亚洲AV日韩AV天堂久久| 美女免费视频一区二区| 24小时免费直播在线观看| 亚洲成人精品久久| 99久久国产热无码精品免费| 久久精品国产亚洲一区二区| 亚洲av日韩av永久在线观看| 国产大片线上免费观看| 亚洲精品高清国产一久久| 在线观看AV片永久免费| 成人婷婷网色偷偷亚洲男人的天堂| 无码少妇一区二区浪潮免费| 国产AV无码专区亚洲AV麻豆丫| 亚洲综合在线另类色区奇米| 99精品视频在线视频免费观看| 国产精品亚洲片在线观看不卡| 日日狠狠久久偷偷色综合免费 | **一级一级毛片免费观看| 久久精品亚洲乱码伦伦中文| 亚洲国产精品网站在线播放 | 真实乱视频国产免费观看| 亚洲一级片在线观看| 国产精品色拉拉免费看| 日本系列1页亚洲系列|