ivaneeo's blog

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

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
          對象的基本特性之一就是封裝(encapsulation)-對外部世界隱藏其內部細節。封裝往往伴隨delegation(委托)。比如說你問主管是否 有時間參加一個會議,他就把這個消息委托給他的記事薄,然后才能回答你。很好,你沒必要知道這位主管到底使用傳統記事薄或電子記事薄抑或秘書來記錄自己的 約會。

          但是人們可能過度運用delegation。你也許會看到某個class接口有一半的函數都委托給其他class,這樣就是過度運用。這時你應該使用Remove Middle Man(160),直接和實責對象打交道。如果這樣[不干實事]的函數只有少數幾個,可以運用Inline Method(117)把它們“inlining”,放進調用端。如果這些Middle Man還有其他行為,你可以運用Replace Delegation with Inheritance(335)把它變成實責對象的subclass,這樣你既可以擴展原對象的行為,又不必負擔那么多的委托動作。
          posted on 2005-08-19 15:59 ivaneeo 閱讀(312) 評論(0)  編輯  收藏 所屬分類: refactoring-從地獄中重生
          主站蜘蛛池模板: 建平县| 鹤壁市| 临夏市| 孟津县| 乐安县| 定日县| 陵川县| 缙云县| 雅安市| 蒲江县| 兰州市| 临泽县| 丹寨县| 米易县| 岳阳县| 阳新县| 巩义市| 德兴市| 苍南县| 香河县| 墨玉县| 柳州市| 宜章县| 桦川县| 五家渠市| 中西区| 长沙市| 镇宁| 连城县| 武宣县| 香港| 遵义市| 克东县| 赤壁市| 太保市| 天祝| 屏东市| 威宁| 温宿县| 简阳市| 新野县|