• <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  評(píng)論-108  文章-0  trackbacks-0
                抽象是一種以簡(jiǎn)化的形式來看待復(fù)雜操作的能力,類的接口為隱藏在其后的具體實(shí)現(xiàn)提供了一種抽象,類的接口應(yīng)能提供一組明顯相關(guān)的子程序。
                如果類的接口不能展現(xiàn)出一直的抽象,那么它的內(nèi)聚性就很弱,應(yīng)該考慮把一些子程序重新組織到只能更專一的類里去,在這些類的接口中提供更好的抽象。
                對(duì)創(chuàng)建類的抽象接口的指導(dǎo)建議:
               (1)類的接口應(yīng)該展現(xiàn)一致的抽象層次:在考慮類的時(shí)候有一種很好的方法,就是把類安坐一種用來實(shí)現(xiàn)ADT的機(jī)制。每個(gè)類應(yīng)該實(shí)現(xiàn)一個(gè)ADT,并且僅實(shí)現(xiàn)這個(gè)ADT,如果你發(fā)現(xiàn)某個(gè)類實(shí)現(xiàn)了不止一個(gè)ADT,或者你不能確定究竟它實(shí)現(xiàn)了何種ADT,就應(yīng)該把這個(gè)類重新組織為了一個(gè)或多個(gè)更加明確的ADT。
               (2)一定要理解類所實(shí)現(xiàn)的抽象是什么。
               (3)提供成對(duì)的服務(wù):大多數(shù)操作都有和其對(duì)應(yīng)的、相等的以及相反的操作,如果有一個(gè)操作用來把燈打開,那么很可能也需要另一個(gè)操作來把燈關(guān)閉。在設(shè)計(jì)一個(gè)類的時(shí)候,要檢查每一個(gè)公用子程序,決定是否需要另一個(gè)與其互補(bǔ)的操作。不要盲目的創(chuàng)建相反操作,一定要考慮,看看是否需要它。
               (4)盡可能讓接口可編程,而不是表達(dá)語義:每個(gè)接口都有一個(gè)可編程的部分和一個(gè)語義部分組成,可編程的部分由接口中的數(shù)據(jù)類型和其他屬性構(gòu)成,編譯器能強(qiáng)制性的在編譯時(shí)檢查錯(cuò)誤,而語義部分則是由“本接口將會(huì)被怎樣使用”的假定組成,而這些是如法通過編譯器來強(qiáng)制實(shí)施的。
               (5)謹(jǐn)防在修改時(shí)破壞接口的抽象性。
               (6)不要添加與接口抽象不一致的公用成員:每次向類添加子程序時(shí),問問“這個(gè)子程序與現(xiàn)有接口所提供的抽象一直嗎?”如果發(fā)現(xiàn)不一致,就要換另一種方法來進(jìn)行修改,以便能夠保持抽象的完整性。
               (7)同時(shí)考慮抽象性和內(nèi)聚性:一個(gè)呈現(xiàn)出很好的抽象的類接口通常也有很高的內(nèi)聚性【如果一個(gè)類表現(xiàn)出很好的抽象性,那么接口一定是朝著一致的方向努力的,從而會(huì)具有很好的內(nèi)聚性】。而具有很強(qiáng)的內(nèi)聚性的類往往也會(huì)呈現(xiàn)為很好的抽象,但是關(guān)系不如前者強(qiáng)烈。一般關(guān)注類的抽象性比關(guān)注類的內(nèi)聚性更有助于理解類的設(shè)計(jì)。 
               封裝是一個(gè)比抽象更強(qiáng)的概念,抽象通過提供可以讓你忽略實(shí)現(xiàn)細(xì)節(jié)的模型來管理復(fù)雜度,而封裝則強(qiáng)制阻止你看到細(xì)節(jié)。抽象和封裝是緊密相關(guān)的,沒有封裝,則抽象就容易被打破。一般而言,要么封裝與抽象兩者皆有,要么就是兩者皆失。
               (1)盡可能的限制類和成員的可訪問性:讓可訪問性盡可能低是促成封裝的原則之一。
               (2)不要公開暴露成員數(shù)據(jù):暴露成員數(shù)據(jù)會(huì)破壞封裝性,從而限制你對(duì)這個(gè)抽象的控制能力。【如果暴露了成員數(shù)據(jù),就不知道何時(shí)數(shù)據(jù)被修改了】
               (3)避免把私用的實(shí)現(xiàn)細(xì)節(jié)放入類的接口中。
               (4)不要對(duì)類的使用者做出任何假設(shè):類的設(shè)計(jì)和實(shí)現(xiàn)應(yīng)該符合在類的接口中所隱含的契約。不應(yīng)該對(duì)接口會(huì)被如果使用或不會(huì)被如何使用做出任何假設(shè)。
               (5)避免使用友元類:一般情況下,友元類會(huì)破壞封裝,因?yàn)樗屇阍谕粫r(shí)刻需要考慮更多的代碼量,從而增加復(fù)雜度。
               (6)不要因?yàn)橐粋€(gè)子程序里僅使用了公用子程序,就把它歸入公開接口:一個(gè)子程序僅僅使用公用的子程序這一事實(shí)并不是十分重要的考慮因素。相反,應(yīng)該問的問題是,把這個(gè)子程序暴露給外界后,接口所展示的抽象是否還是一致的。
               (7)讓閱讀代碼比編寫代碼更方便:閱讀代碼的次數(shù)要比編寫代碼的次數(shù)多的多,即使在開發(fā)的初期。
               (8)要警惕從語義上破壞封裝性:每當(dāng)你發(fā)現(xiàn)自己是通過查看那類的內(nèi)部實(shí)現(xiàn)來得知如何使用這個(gè)類的時(shí)候,你就不是在針對(duì)接口編程了,而是在透過接口針對(duì)內(nèi)部實(shí)現(xiàn)編程了,如果你透過接口來編程的話,封裝性就被破壞了,而一旦封裝性開始遭到破壞,抽象能力就快遭殃了。
               (9)留意過于緊密的耦合關(guān)系。
               耦合性與抽象和封裝性有著非常緊密的聯(lián)系,緊密的額耦合性是發(fā)生在抽象不嚴(yán)禁或者封裝性遭到破壞的時(shí)候,如一個(gè)類提供了一套不完整的服務(wù),其他的子程序就可能要去直接讀寫該類的內(nèi)部數(shù)據(jù),這樣一來,就把類給拆開了,把他從一個(gè)黑合盒子變成了一個(gè)玻璃合資,從而事實(shí)上消除了類的封裝性。
            posted on 2007-09-26 09:16 探丫頭 閱讀(991) 評(píng)論(3)  編輯 收藏 引用 所屬分類: 《代碼大全》讀書筆記

            評(píng)論:
            # re: 第6章 可以工作的類(2) 2007-09-26 17:18 | 夢(mèng)在天涯
            都是有點(diǎn)抽象的!

            偶爾來個(gè)實(shí)例也不錯(cuò)的餓!  回復(fù)  更多評(píng)論
              
            # re: 第6章 可以工作的類(2) 2007-09-27 09:16 | 探丫頭
            呵呵,理論懂了,實(shí)例自然就會(huì)寫了  回復(fù)  更多評(píng)論
              
            # re: 第6章 可以工作的類(2) 2007-09-30 23:00 | Minidx全文檢索
            恩,抽象出來的理論比較具有指導(dǎo)性
            實(shí)例只不過是抽象的一種實(shí)現(xiàn)方式  回復(fù)  更多評(píng)論
              
            久久久久久亚洲精品成人| 日韩亚洲国产综合久久久| 久久综合给久久狠狠97色| 91精品国产91久久综合| 久久无码一区二区三区少妇| 久久无码精品一区二区三区| 一级女性全黄久久生活片免费| 亚洲国产精品一区二区久久hs| 久久国产成人午夜AV影院| 亚洲精品无码久久不卡| 久久国产精品成人片免费| 国产成人久久久精品二区三区| 久久久久久久久久久精品尤物 | 国产精品成人精品久久久| 国产精品成人久久久| 成人久久久观看免费毛片| 久久综合九色欧美综合狠狠| 久久国产精品久久精品国产| 久久人人爽人人爽人人片av麻烦| 丁香五月综合久久激情| 99久久精品国产免看国产一区| 久久天天躁狠狠躁夜夜avapp| 精品国产VA久久久久久久冰| 综合人妻久久一区二区精品| 中文字幕无码av激情不卡久久| 狠狠色丁香婷综合久久| 99久久精品午夜一区二区| 久久亚洲国产成人精品性色| 国产69精品久久久久APP下载| 国产精品久久亚洲不卡动漫| 国产成人久久激情91| 久久成人影院精品777| 2021精品国产综合久久| 狠狠色丁香婷婷久久综合不卡| 精品久久久久久久久午夜福利| 午夜天堂精品久久久久| 久久精品中文字幕大胸| 久久精品国产亚洲av麻豆蜜芽| 中文字幕热久久久久久久| 久久偷看各类wc女厕嘘嘘| 久久棈精品久久久久久噜噜|