組合/聚合復(fù)用原則

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

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

          ☆ 繼承復(fù)用
          ① 優(yōu)點(diǎn):
          ? 新的實(shí)現(xiàn)較為容易,因?yàn)榛惖拇蟛糠止δ芸梢酝ㄟ^繼承關(guān)系自動(dòng)進(jìn)入派生類;
          ? 修改或擴(kuò)展繼承而來的實(shí)現(xiàn)較為容易。
          ② 缺點(diǎn):
          ? 繼承復(fù)用破壞包裝,因?yàn)槔^承將基類的實(shí)現(xiàn)細(xì)節(jié)暴露給派生類,這種復(fù)用也稱為白箱復(fù)用;
          ? 如果基類的實(shí)現(xiàn)發(fā)生改變,那么派生類的實(shí)現(xiàn)也不得不發(fā)生改變;
          ? 從基類繼承而來的實(shí)現(xiàn)是靜態(tài)的,不可能在運(yùn)行時(shí)發(fā)生改變,不夠靈活。

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

          posted on 2009-07-02 23:09 luofeng225 閱讀(1334) 評(píng)論(0)  編輯  收藏 所屬分類: 設(shè)計(jì)模式

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

          導(dǎo)航

          統(tǒng)計(jì)

          公告

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

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          文章分類

          相冊(cè)

          收藏夾

          Java Website

          java技術(shù)博客

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 和顺县| 江北区| 盖州市| 习水县| 鹤山市| 肇州县| 高淳县| 丹巴县| 祁东县| 辽源市| 兴业县| 修水县| 安多县| 卢龙县| 武乡县| 怀宁县| 张家港市| 屏东县| 麻阳| 恭城| 岗巴县| 永登县| 古蔺县| 周口市| 淳安县| 吉木乃县| 苗栗县| 汝城县| 双鸭山市| 栾城县| 衡阳市| 新绛县| 资阳市| 杭州市| 同德县| 沁水县| 惠州市| 平陆县| 开化县| 阳山县| 开江县|