• <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>

            DJ's c++ blog

            c++學(xué)習(xí)歷程

            常用鏈接

            統(tǒng)計(jì)

            最新評(píng)論

            啃書(shū)筆記:設(shè)計(jì)模式

            最近在啃的書(shū),都是大部頭,不方便隨身攜帶.于是,就在包里丟了本<設(shè)計(jì)模式解析>,以便平時(shí)沒(méi)事干的時(shí)候看.

            可是由于看了的很多東西都不能立刻投入到實(shí)用中,久而久之就很容易忘記.(effective那兩本就是這樣).

            于是就想在讀書(shū)的同時(shí)寫(xiě)寫(xiě)一些關(guān)鍵點(diǎn)以及理解,權(quán)當(dāng)加深記憶,還有鍛煉表達(dá)能力.

            這個(gè)坑就獻(xiàn)給<設(shè)計(jì)模式解析>,<設(shè)計(jì)模式>這兩書(shū)吧.前者是聽(tīng)到網(wǎng)上評(píng)論說(shuō)不錯(cuò),讀了再讀<設(shè)計(jì)模式>會(huì)理解的更好,于是就入了.現(xiàn)在在讀.

            由于這是剛看剛寫(xiě),如果有不正確的,希望賜教,見(jiàn)笑啦.
            ======================================================================

            內(nèi)聚性指的是類內(nèi)部組成部分之間相互聯(lián)系的緊密程度
            耦合性指的是一個(gè)類與其它類之間聯(lián)系的緊密程度

            封裝變化
            用類的聚合代替繼承

            Facade

            "為子系統(tǒng)中的一組接口提供一個(gè)統(tǒng)一的接口.Facade模式定義了一個(gè)更高層的接口,使子系統(tǒng)更加容易使用"

            Facade模式是提供一個(gè)新的,更加簡(jiǎn)單以及符合實(shí)用的接口,來(lái)使用一個(gè)復(fù)雜系統(tǒng)的子集.
            我寫(xiě)的那個(gè)俄羅斯方塊中的Console類,貌似就是符合Facade模式的,需要用的控制臺(tái)API(占總數(shù)的一小部分)封裝到Consol類中,使得控制方塊的顯示改變更加容易.


            Adapter

            "將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口.Adapter模式使原本由于接口不兼容而不能一起工作的類可以一起工作."

            1.例如抽象類有接口int foo(int a,int b,bool c),其派生類A中的foo函數(shù)已經(jīng)由另外一個(gè)函數(shù)實(shí)現(xiàn),但是函數(shù)foo2只需要兩個(gè)參數(shù),則可以如下復(fù)用代碼.
            int foo(int a,int b,bool c)
            {
               return foo2(a,b);
            }

            2.如果虛基類Shape有多個(gè)派生類,如Point,Square,Circle等.但是其中一個(gè)派生類已有相似實(shí)現(xiàn),如ShapeCircle,但是ShapeCircle的接口又與Shape不一致.則可在Circle中包含一個(gè)類型為ShapeCircle的數(shù)據(jù)成員,并在接口的實(shí)現(xiàn)中運(yùn)用1,以此復(fù)用代碼.


            Strategy

            "定義一系列的算法,把它們一個(gè)個(gè)封裝起來(lái),并且使它們可相互替換.Strategy模式使算法可獨(dú)立于使用它的客戶而變化."

            (話說(shuō),這句話真是看的人云里霧里的...)

            一個(gè)類A中,擁有許多的成員函數(shù),這些函數(shù)都需要根據(jù)一些狀態(tài)進(jìn)行不同操作.如果將A當(dāng)作基類直接寫(xiě)相應(yīng)狀態(tài)的派生類時(shí),隨著狀態(tài)的復(fù)雜程度增加,則會(huì)導(dǎo)致繼承層次過(guò)大,特化版本過(guò)多.
            Strategy模式則是將類A中的函數(shù)封裝成虛基類,然后通過(guò)繼承A中的類成員以應(yīng)對(duì)不同的狀態(tài).


            Bridge

            "將抽象與其實(shí)現(xiàn)解耦,使它們都可以獨(dú)立地變化."

            一個(gè)類A需要調(diào)用不同的實(shí)現(xiàn)做不同的事情,如果用繼承去解決(用某種實(shí)現(xiàn)實(shí)現(xiàn)某種事情則為1個(gè)派生類),隨著不同的實(shí)現(xiàn)(m)和不同的事情(n)的數(shù)量增長(zhǎng),會(huì)造成派生類數(shù)量的爆炸性增長(zhǎng)(m*n).Bridge模式是把實(shí)現(xiàn)抽象,然后在A中持有實(shí)現(xiàn)的句柄,再通過(guò)動(dòng)態(tài)創(chuàng)建做事情(m+n).


            Abstract Factor

            "為創(chuàng)建一組相關(guān)或相互依賴的對(duì)象提供一個(gè)接口,而且無(wú)需指定它們的具體類."

            @_@ 這個(gè)覺(jué)得定義的挺明確的,剛看完,還沒(méi)怎么思考過(guò),有空再補(bǔ)寫(xiě)...

            to be continue...

            posted on 2009-10-14 20:54 DJ 閱讀(298) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 啃書(shū)筆記

            久久九九久精品国产免费直播| 日韩av无码久久精品免费| 久久亚洲春色中文字幕久久久| 99久久做夜夜爱天天做精品| 一本色道久久88—综合亚洲精品| 97久久精品国产精品青草| 久久久久综合中文字幕| 国产一区二区三区久久精品| 亚洲综合久久久| 国产精品热久久无码av| 久久九九兔免费精品6| 国产成人AV综合久久| 亚洲精品午夜国产va久久| 久久天天躁狠狠躁夜夜躁2O2O| 亚洲欧美日韩精品久久| 久久久久国产一级毛片高清版| 无码日韩人妻精品久久蜜桃| 无码国内精品久久综合88 | 亚洲欧美日韩久久精品第一区| www性久久久com| 国内精品伊人久久久久AV影院| 欧美精品福利视频一区二区三区久久久精品 | 亚洲va中文字幕无码久久| 国产999精品久久久久久| 久久天堂AV综合合色蜜桃网| 国产精品久久久久a影院| 久久精品?ⅴ无码中文字幕| 精品综合久久久久久888蜜芽| 亚洲国产成人精品91久久久 | 亚洲综合久久综合激情久久| 亚洲午夜久久久久久久久久 | 国产成人综合久久精品尤物| 久久精品99久久香蕉国产色戒 | 久久久久久午夜成人影院| 国产精品久久久久蜜芽| 久久天天躁狠狠躁夜夜不卡 | 久久强奷乱码老熟女网站| 伊人 久久 精品| 久久强奷乱码老熟女网站| 久久精品国产亚洲AV不卡| 国产高潮久久免费观看|