ivaneeo's blog

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

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
          如果你看到用戶向一個對象索求(request)另一個對象,然后再向后者索求另一個對象,然后再索求另一個對象。。。。。。這就是Message Chain。實際代碼中你看到的可能是一長串getThis()或一長串臨時變量。采取這種方式,意味客戶將與查找過程中的航行結構(structure of navigation)緊密耦合。一旦對象間的關系發生任何變化,客戶端就不得不作出相應修改。

          這時候你應該使用Hide Delegate(157)。你可以在Message Chain的不同位置進行這種重構手法。理論上你可以重構Message Chain上的任何一個對象,但這么做往往會把所有中介對象(intermediate object)都變成Middle Man.通常更好的選擇是:先觀察Message Chain最終得到的對象是用來干什么的,看看能否以Extract Method(110)把使用該對象的代碼提煉到一個獨立函數中,再運用Move Method(142)把這個函數推入Message Chain。如果這條鏈上的某個對象有多位客戶打算航行此航線的剩余部分,就加一個函數來做這件事。
          posted on 2005-08-19 15:36 ivaneeo 閱讀(746) 評論(0)  編輯  收藏 所屬分類: refactoring-從地獄中重生
          主站蜘蛛池模板: 云龙县| 搜索| 鹰潭市| 大化| 普兰县| 独山县| 湖州市| 乾安县| 潜江市| 韩城市| 阿克| 盱眙县| 临武县| 贞丰县| 华阴市| 青海省| 阜平县| 额尔古纳市| 澎湖县| 清河县| 越西县| 远安县| 天津市| 融水| 无棣县| 桦川县| 连山| 彭泽县| 禄丰县| 安宁市| 阿城市| 扶风县| 贡山| 黎平县| 视频| 高要市| 道孚县| 阳东县| 遵义市| 渝中区| 万宁市|