ivaneeo's blog

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

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
          作法(Mechanics)
            • 如果field的屬性是public,首先使用Encapsulate Field(206)將它封裝起來。
                • ==》如果你有可能移動(dòng)那些頻繁訪問該field的函數(shù),或如果有許多函數(shù)訪問某個(gè)field,先使用Self Encapsulate Field(171)也許會(huì)有幫助。
            • 編譯,測(cè)試。
            • 在target class中建立與source field相同的field,并同時(shí)建立相應(yīng)的設(shè)值/取值(setting/getting)函數(shù)。
            • 編譯target class。
            • 決定如何在source object中引用target object。
                • ==》一個(gè)現(xiàn)成的field或method可以助你得到target object。如果沒有,就看能否輕易建立這樣一個(gè)函數(shù)。如果還不行,就得在source class中新建一個(gè)field來存放target object。這可能是個(gè)永久性修改,但你也可以暫不公開它,因?yàn)楹罄m(xù)重構(gòu)可能會(huì)把這個(gè)新建field除掉。
            • 刪除source field。
            • 將所有[對(duì)source field的引用]替換為[對(duì)target適當(dāng)函數(shù)的調(diào)用]。
                • ==》如果是[讀取]該變量,就把[對(duì)source field的引用]替換為[對(duì)target取值函數(shù)(getter)的調(diào)用];如果是[賦值]該變量,就把[對(duì)source field的引用]替換成[對(duì)設(shè)值函數(shù)(setter)的調(diào)用]。
                • ==》如果source field不是private,就必須在source class的所有subclasses中查找source field的引用點(diǎn),并進(jìn)行相應(yīng)替換。
            • 編譯,測(cè)試。
          posted on 2005-08-30 14:31 ivaneeo 閱讀(158) 評(píng)論(0)  編輯  收藏 所屬分類: refactoring-從地獄中重生
          主站蜘蛛池模板: 泸水县| 山阳县| 澎湖县| 巴南区| 西安市| 霍林郭勒市| 华坪县| 富阳市| 瓮安县| 公安县| 个旧市| 张北县| 鹤壁市| 临武县| 石柱| 保定市| 星座| 垣曲县| 偏关县| 大厂| 松潘县| 上林县| 松滋市| 稷山县| 承德市| 隆子县| 宜州市| 神农架林区| 马山县| 连江县| 东山县| 萨嘎县| 东至县| 彝良县| 嘉兴市| 合山市| 商南县| 宁夏| 阿鲁科尔沁旗| 江城| 抚远县|