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-從地獄中重生
          主站蜘蛛池模板: 古丈县| 天门市| 青海省| 葫芦岛市| 临泉县| 城市| 蒲江县| 临猗县| 怀远县| 宜良县| 夏河县| 于田县| 呼和浩特市| 嘉祥县| 宿州市| 景洪市| 中江县| 佛坪县| 南召县| 临颍县| 历史| 天全县| 庆安县| 台中市| 札达县| 嘉兴市| 镇坪县| 广德县| 西畴县| 霍州市| 大竹县| 民丰县| 开鲁县| 绥宁县| 琼结县| 新营市| 荣昌县| 奉节县| 新津县| 那坡县| 华容县|