ivaneeo's blog

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

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

          常用鏈接

          留言簿(34)

          我參與的團隊

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          如果你看到用戶向一個對象索求(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-從地獄中重生
          主站蜘蛛池模板: 壤塘县| 佛教| 绥江县| 普兰店市| 云浮市| 桦南县| 宜兰市| 全南县| 定西市| 济阳县| 白水县| 和硕县| 清水河县| 珠海市| 大同市| 通州市| 茶陵县| 灵山县| 西平县| 武陟县| 增城市| 浦城县| 辽宁省| 佛学| 普洱| 宣恩县| 西藏| 岑溪市| 招远市| 忻州市| 甘肃省| 石城县| 左权县| 沐川县| 如皋市| 茶陵县| 洱源县| 锡林郭勒盟| 玉门市| 万全县| 永安市|