組合/聚合復用原則

          組合/聚合復用原則 【5,Composition/Aggregation Reuse Principle(CARP)

          就是說要盡量的使用合成和聚合,而不是繼承關系達到復用的目的。
          該原則就是在一個新的對象里面使用一些已有的對象,使之成為新對象的一部分:新的對象通過向這些對象的委派達到復用已有功能的目的。
          ?
          ?其實這里最終要的地方就是區(qū)分“has-a”和“is-a”的區(qū)別。相對于合成和聚合,
          繼承的缺點在于:父類的方法全部暴露給子類。父類如果發(fā)生變化,子類也得發(fā)生變化。聚合的復用的時候就對另外的類依賴的比較的少。。
          ? ☆ 合成/聚合復用
          ① 優(yōu)點:
          ? 新對象存取成分對象的唯一方法是通過成分對象的接口;
          ? 這種復用是黑箱復用,因為成分對象的內(nèi)部細節(jié)是新對象所看不見的;
          ? 這種復用支持包裝;
          ? 這種復用所需的依賴較少;
          ? 每一個新的類可以將焦點集中在一個任務上;
          ? 這種復用可以在運行時動態(tài)進行,新對象可以使用合成/聚合關系將新的責任委派到合適的對象。
          ② 缺點:
          ? 通過這種方式復用建造的系統(tǒng)會有較多的對象需要管理。

          ☆ 繼承復用
          ① 優(yōu)點:
          ? 新的實現(xiàn)較為容易,因為基類的大部分功能可以通過繼承關系自動進入派生類;
          ? 修改或擴展繼承而來的實現(xiàn)較為容易。
          ② 缺點:
          ? 繼承復用破壞包裝,因為繼承將基類的實現(xiàn)細節(jié)暴露給派生類,這種復用也稱為白箱復用;
          ? 如果基類的實現(xiàn)發(fā)生改變,那么派生類的實現(xiàn)也不得不發(fā)生改變;
          ? 從基類繼承而來的實現(xiàn)是靜態(tài)的,不可能在運行時發(fā)生改變,不夠靈活。

          參考:http://blog.csdn.net/plusir/archive/2006/08/20/1099824.aspx

          posted on 2009-07-02 23:09 luofeng225 閱讀(1329) 評論(0)  編輯  收藏 所屬分類: 設計模式

          <2009年7月>
          2829301234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          導航

          統(tǒng)計

          公告

          我曾經(jīng)聽到這么一個故事: 一個年輕的程序員問一個老程序員(一個比較牛逼的公司的CTO) 年輕程序員: 你為什么這么牛X., 就好像沒有你不會的。老程序員: 積累的。年輕程序員: 怎么才能積累到您的程度呢。我每天都在積累。但是似乎都沒有感覺到進步。老程序員: 我從20歲開始做到了一件事情,直到今天,而且盡可能地保證不間斷。年輕程序員: 到底是什么? 老程序員: 我每天保證自己有2個小時在學習新的東西。

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          文章分類

          相冊

          收藏夾

          Java Website

          java技術博客

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 克山县| 离岛区| 靖远县| 沈阳市| 城步| 鲁山县| 肃宁县| 漳平市| 瑞丽市| 科技| 新余市| 贵州省| 安塞县| 北流市| 开化县| 新建县| 揭西县| 新宁县| 玉山县| 本溪市| 阜城县| 金溪县| 古蔺县| 阿合奇县| 班玛县| 贺兰县| 新竹县| 大英县| 洪雅县| 朝阳区| 聊城市| 巍山| 司法| 富平县| 慈利县| 卓尼县| 迁西县| 张家口市| 永嘉县| 视频| 库伦旗|