• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-34  評論-108  文章-0  trackbacks-0
            包含(“有一個....”的關(guān)系):標志一個類含有一個基本數(shù)據(jù)元素或?qū)ο蟆?br>(1)通過包含來實現(xiàn)“有一個/has a”的關(guān)系:比如一個雇員“有一個”姓名,“有一個”電話號碼。
            (2)在萬不得已時,通過private繼承來實現(xiàn)“有一個”的關(guān)系:這么做的主要原因是讓外層的包含類能夠訪問內(nèi)層被包含類的protected成員函數(shù)和數(shù)據(jù)成員。但是這樣會從一定程度上破壞封裝性。
            (3)警惕又超過約7個數(shù)據(jù)成員的類:研究表明,人們在做其他事情市能記住的離散項目的個數(shù)是7+-2,如果一個類包含超過約7個數(shù)據(jù)成員,請考慮要不要分解為幾個更小的類。如果數(shù)據(jù)成員都是整形或者字符串這種簡單數(shù)據(jù)類型,你可以按照7+-2的上限來考慮,反之,如果數(shù)據(jù)成員都是復(fù)雜對象的話,就應(yīng)按7+-2的下限來考慮。
            繼承(“是一個...”的關(guān)系):繼承是說一個類是另一個類的一種特化。
            (1)用public繼承來實現(xiàn)“是一個....”的關(guān)系:決定用繼承一個現(xiàn)有類的方式創(chuàng)建一個新類事,表明這個新的類是現(xiàn)有類一個更為特殊的版本,基類既對派生類將會做什么設(shè)定了預(yù)期,也對派生類能怎么運作提出了限制。如果派生類不準備完全遵守由基類定義的同一個接口的契約,繼承就是不正確的實現(xiàn)技術(shù)了。
            (2)要么使用繼承并進行詳細說明,要么就不要用它。
            (3)遵循Liskov替換原則:派生類必須能通過基類的接口而被使用,切使用者無需了解兩者之間的差異。換句話說,對于基類中定義的所有子程序,用在它的任何派生類中時的含義都應(yīng)該是相同的。
            (4)確保只繼承需要繼承的部分:派生類可以繼承成員函數(shù)的接口和/或?qū)崿F(xiàn)。
            (5)不要“覆蓋”一個不可覆蓋的成員函數(shù)。
            (6)把公用的接口、數(shù)據(jù)及操作放到繼承樹中盡可能高的位置:如果發(fā)現(xiàn)把一個子程序移到更到的層次后會破壞該層對象的抽象性,就停手。
            (7)只有一個實例的類是值得懷疑的:Singleton模式是特殊的。
            (8)派生后覆蓋了某個子程序,擔在其中沒做任何操作,這種情況也值得懷疑。舉例:假設(shè)你有一個Cat類,他有一個Scratch(抓)成員函數(shù),可是最終你發(fā)現(xiàn)有些貓的爪尖沒了,不能抓了,你可能想從Cat類派生一個叫ScratchlessCat(不能抓的貓)的類,然后覆蓋Scratch方法讓它什么都不做。這種方法是不可取的,修正這一問題的位置不在派生類,而是在最初的Cat類中,應(yīng)該創(chuàng)建一個Claw(爪子)類并讓Cat類包含它,問題的根源在于做了所有貓能抓的假設(shè)。
            (9)避免讓繼承體系過深:《Object-Oritented Design Hwuristics》作者Arthur Riel建議把繼承層次限制在最多6層之內(nèi),Arthur是基于“神奇數(shù)字7+-2”這一理論得出這一建議的,但是依經(jīng)驗而言,大多數(shù)人在腦中同時應(yīng)付超過2到3層繼承時就有麻煩了,用7+-2來限制一個 基類的派生類總數(shù)——而不是繼承層次的層數(shù)——可能更為合適。
            (10)盡量使用多態(tài),避免大量的類型檢查:頻繁重復(fù)出現(xiàn)的case語句有時是在暗示,采用繼承可能是種更好的設(shè)計選擇。
            (11)讓所有數(shù)據(jù)都是private(而非protected):如果派生類真的需要訪問基類的屬性,就應(yīng)該提供protected訪問器函數(shù)。
            posted on 2007-09-28 09:21 探丫頭 閱讀(1126) 評論(2)  編輯 收藏 引用 所屬分類: 《代碼大全》讀書筆記

            評論:
            # re: 第6章 可以工作的類(3) 2007-09-28 20:17 | aa
            QQ群名稱:游戲編程學(xué)習(xí)和開發(fā)M
            QQ群號碼:43047318
            創(chuàng)建人QQ號碼:光愛之子(273612158)
            QQ群描述:群里是可以提供游戲和有關(guān)游戲編程知識。同時還有數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)。 和一些懂得操作系統(tǒng)原理的人 希望你加入。 謝謝!還有游戲策劃,運營有關(guān)方面知識。   回復(fù)  更多評論
              
            # re: 第6章 可以工作的類(3) 2007-09-29 16:40 | 探丫頭
            @aa
            我對游戲編程沒興趣,謝謝  回復(fù)  更多評論
              
            久久99国产精品二区不卡| 亚洲午夜久久久久久久久电影网| 成人综合伊人五月婷久久| 99久久国产精品免费一区二区| 久久国产精品99精品国产| 国产精品九九久久精品女同亚洲欧美日韩综合区 | 国产亚洲欧美成人久久片| 亚洲嫩草影院久久精品| 思思久久99热免费精品6| 亚洲精品乱码久久久久66| 日韩亚洲欧美久久久www综合网| 四虎影视久久久免费观看| 久久久久免费看成人影片| 久久综合成人网| 99久久99这里只有免费费精品| 国产免费久久精品99久久| 伊人久久大香线蕉亚洲| 久久免费香蕉视频| 久久青草国产精品一区| 色欲久久久天天天综合网精品| 久久久受www免费人成| 91久久福利国产成人精品| 久久久久久人妻无码| 久久久www免费人成精品| 久久影视综合亚洲| 精品国产一区二区三区久久蜜臀| 久久er99热精品一区二区| 久久影院亚洲一区| 久久久99精品成人片中文字幕 | 久久精品国产亚洲欧美| 久久综合亚洲鲁鲁五月天| 精品久久久久中文字| 精品久久久久久中文字幕| 久久精品亚洲日本波多野结衣| 无码任你躁久久久久久老妇App| 久久精品国产99久久丝袜| 久久se这里只有精品| 久久精品国产一区二区电影| 国产成人无码精品久久久久免费| 狠狠狠色丁香婷婷综合久久俺| 久久人爽人人爽人人片AV|