<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ivaneeo's blog

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

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
    subclass應(yīng)該繼承superclass的函數(shù)和數(shù)據(jù)。但如果它們不想或不需要繼承,又該怎么辦呢?它們得到所有禮物,卻只從中挑選幾樣來玩!

    按傳統(tǒng)說法,這就意味繼承系統(tǒng)設(shè)計錯誤。你需要為這個subclass新建一個兄弟(sibling class),再運用Push Down Method(328)和Push Down Field(329)把所有用不到的函數(shù)下推給那兄弟。這樣一來superclass就持有所有subclasses共享的東西。常常你會聽到這樣的建議:所有superclasses都應(yīng)該是抽象的(abstract)。

    既然使用[傳統(tǒng)說法]這個略帶貶義的詞,你就可以猜到,我們不建議你這么做,起碼不建議你每次都這么做。我們經(jīng)常利用subclassing手法來復(fù)用一些行為,并發(fā)現(xiàn)這可以很好地應(yīng)用于日常工作。這也是一種壞味道,我們不否認(rèn),但氣味通常并不強烈。所以我們說:如果Refused Bequest引起困惑和問題,請遵循傳統(tǒng)忠告。但不必認(rèn)為你每次都得那么做。十有八九這種壞味道很淡,不值得理睬。

    如果subclass復(fù)用了superclass的行為(實現(xiàn)),卻又不原意支持superclass得接口,Refused Bequest的壞味道就會變得濃烈。拒絕繼承superclass的實現(xiàn),這一點我們不介意;但如果拒絕繼承superclass的接口,我們不以為然。不過即使你不原意繼承接口,也不要胡亂修改繼承體系,你應(yīng)該運用Replace Inheritance with Delegation(352)來達(dá)到目的。
    posted on 2005-08-19 17:26 ivaneeo 閱讀(386) 評論(0)  編輯  收藏 所屬分類: refactoring-從地獄中重生
    主站蜘蛛池模板: 亚洲精品乱码久久久久久中文字幕 | 亚洲av综合色区| 香蕉国产在线观看免费| 麻豆国产人免费人成免费视频| 久久狠狠爱亚洲综合影院| 免费下载成人电影| 激情综合亚洲色婷婷五月| 97在线观免费视频观看| 丁香婷婷亚洲六月综合色| 国语成本人片免费av无码| 亚洲成_人网站图片| 成人性生交视频免费观看| 亚洲日本乱码卡2卡3卡新区| 日韩欧美一区二区三区免费观看| 99热亚洲色精品国产88| 最近中文字幕mv免费高清视频7 | 亚洲人成人网站18禁| 国产极品美女高潮抽搐免费网站| 久久久久亚洲国产AV麻豆| 国产男女猛烈无遮挡免费视频网站| 免费亚洲视频在线观看| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 鲁啊鲁在线视频免费播放| 国产成人亚洲精品91专区手机| 精品国产福利尤物免费| 亚洲va国产va天堂va久久| 国产桃色在线成免费视频| 色欲aⅴ亚洲情无码AV| 精品国产亚洲一区二区在线观看| 两个人看的www免费| 亚洲第一区视频在线观看| 成年女人18级毛片毛片免费| 男性gay黄免费网站| 亚洲va中文字幕无码久久不卡| 国产精品69白浆在线观看免费| 男男gvh肉在线观看免费| 婷婷精品国产亚洲AV麻豆不片 | 小说专区亚洲春色校园| 国产成A人亚洲精V品无码性色| 国内精自视频品线六区免费| 女人裸身j部免费视频无遮挡|