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

            歲月流轉(zhuǎn),往昔空明

            C++博客 首頁 新隨筆 聯(lián)系 聚合 管理
              118 Posts :: 3 Stories :: 413 Comments :: 0 Trackbacks
            最近由于忙著準(zhǔn)備實(shí)習(xí)單位的面試,加上導(dǎo)師的任務(wù),所以更新的有點(diǎn)慢,希望大家能諒解。

            下面繼續(xù)。

            Decorator
            描述:
            動(dòng)態(tài)、透明的為對(duì)象添加職責(zé)。
            適用性/作用:
            該模式有兩個(gè)主要參與者,Decoratee和Decorator。前者為原有的對(duì)象,而后者則是在前者的基礎(chǔ)上添加了新的功能。在GOF的描述中,Decorator和Decoratee使用了相同的接口。同時(shí)大部分的相關(guān)材料都側(cè)重于這一模式“添加職責(zé)”的功能。但是有一點(diǎn)個(gè)人認(rèn)為,在該模式的使用中還有兩點(diǎn)值得考慮
            首先,Decorator和Decoratee不僅在繼承體系中屬于同一層,在整個(gè)系統(tǒng)的功能體系中也應(yīng)當(dāng)是平級(jí)的。Decoratee自身也需要有相當(dāng)?shù)目赡苄员华?dú)立的使用到,否則在兩個(gè)對(duì)象之間建立Decorator-Decoratee的關(guān)系就不那么必要,也許將Decoratee在功能體系中下移是個(gè)更好的選擇,因?yàn)樗鼤?huì)避開“相同接口”這樣一個(gè)限制;
            其次,Decorator之間的功能劃分最好是正交的。一旦Decorator之間出現(xiàn)了不一致性,那么Decorator的裝飾次序?qū)?huì)影響到實(shí)際的結(jié)果,或者對(duì)某個(gè)Decorator而言Decoratee存在著限制。而這些運(yùn)行時(shí)才有的特性很難在靜態(tài)設(shè)計(jì)中體現(xiàn)出來,會(huì)造成對(duì)系統(tǒng)功能的理解造成障礙。

            Facade
            描述:
            為子系統(tǒng)中的一組接口提供一個(gè)統(tǒng)一的界面
            適用性/作用:
            由于子系統(tǒng)間的類聯(lián)系比較緊密,他們通常會(huì)一一種固定的協(xié)作方式完成某項(xiàng)任務(wù)。當(dāng)客戶代碼多以這種粗粒度的方式與子系統(tǒng)打交道時(shí),F(xiàn)acade模式便有必要起來。
            Facade模式可以用來解決以下兩個(gè)問題
            第一,如果某種粗粒度任務(wù)都是由一系列的細(xì)粒度組件以一定的語義關(guān)系耦合起來。而客戶代碼只關(guān)心這種粗粒度的任務(wù),但不關(guān)心這個(gè)任務(wù)究竟怎樣由子系統(tǒng)的組件合作完成的。那么這是,可以使用Facade模式將細(xì)粒度之間的語義耦合封裝起來,并且這種封裝可以防止子系統(tǒng)組件間合作的改變對(duì)客戶代碼造成影響。
            第二,也就是GOF所描述的,簡化客戶使用子系統(tǒng)的復(fù)雜度。
            Facade本身的設(shè)計(jì)在實(shí)踐過程中會(huì)遇到以下幾種情況
            第一種情況下,F(xiàn)acade本身具有很高的內(nèi)聚,同時(shí)它完全封裝了子系統(tǒng)(說明子系統(tǒng)內(nèi)聚度高),客戶代碼不需要知道子系統(tǒng)的細(xì)節(jié)便可以用Facade完成全部的工作。這一點(diǎn)是最理想的情況。
            更多的可能是,F(xiàn)acade不能包辦一切,程序既要與子系統(tǒng)打交道,也要與Facade打交道。這種情況下,如果Facade使用不當(dāng),便會(huì)破壞系統(tǒng)的層次結(jié)構(gòu)。
            個(gè)人的經(jīng)驗(yàn)是,
            如果一些子任務(wù)可以由Facade封裝而完全不需要與子系統(tǒng)打交道,便對(duì)子系統(tǒng)的部分粗粒度任務(wù)使用Facade模式,保持局部的內(nèi)聚性和抽象能力;
            如果一個(gè)功能,客戶通常都直接調(diào)用Facade,但是在少數(shù)情況下不可避免的要與細(xì)粒度組件打交道,那么通常我會(huì)將Facade旁置為一些Help Function,讓它們與子系統(tǒng)組件處于差不多同樣的地位,并以文檔顯示地注明其實(shí)現(xiàn)原理。
            當(dāng)然,能通過修改子系統(tǒng)的設(shè)計(jì)避免這種情況的出現(xiàn)是最完美的結(jié)局了。

            Flyweight
            適用性/作用:
            呃,關(guān)于這個(gè)我想GOF已經(jīng)描述的非常好了,我也就不說廢話了。注意Flyweight在其它模式中的應(yīng)用就行了。我經(jīng)常就會(huì)在該用它的時(shí)候忘了用了。Flyweights通常由pool手法實(shí)現(xiàn)。

            Proxy
            適用性/作用:
            Proxy的目的很明確,在維持原有接口和功能設(shè)計(jì)情況下,解除原始對(duì)象的限制。這最后的一句話是我的理解。通常一個(gè)對(duì)象實(shí)現(xiàn)一個(gè)功能直接實(shí)現(xiàn)就可以了;但是在一些應(yīng)用中,會(huì)有一些與功能無關(guān)的限制和要求,例如對(duì)象可能是遠(yuǎn)程的,或者有內(nèi)存方面的限制等等。為了解除這些限制,需要一些額外的手法來達(dá)到這樣的目的。但是它們所附加的內(nèi)容在功能設(shè)計(jì)時(shí)并沒有描述。也就是說,這些不是客戶需要關(guān)心的,它們應(yīng)該被抽象掉。Proxy就是為了隱藏這些與代碼的核心功能無關(guān)的實(shí)現(xiàn),讓客戶端認(rèn)為它是個(gè)沒有限制的對(duì)象。

            對(duì)象型模式講完了,下面的行為型模式我大概分兩次講,歡迎大家的板磚。
            posted on 2007-11-06 16:42 空明流轉(zhuǎn) 閱讀(1445) 評(píng)論(2)  編輯 收藏 引用

            評(píng)論

            # re: 設(shè)計(jì)模式小結(jié)(二) 2007-11-07 09:16 zheng
            筆記寫的不錯(cuò)  回復(fù)  更多評(píng)論
              

            # re: 設(shè)計(jì)模式小結(jié)(二) 2007-11-09 16:42 攀升
            兄弟,你把blog頁面調(diào)整一下,一些看不到呀   回復(fù)  更多評(píng)論
              


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            热99RE久久精品这里都是精品免费| 久久久WWW成人免费精品| 亚洲精品无码久久久久sm| 99久久综合国产精品免费| 亚洲午夜久久久久久久久电影网| 996久久国产精品线观看| 久久久久久久综合日本| 久久久久成人精品无码中文字幕| 亚洲国产精品久久久久| 狠狠色婷婷久久综合频道日韩 | 久久香蕉超碰97国产精品 | 亚洲中文字幕伊人久久无码 | 久久亚洲AV成人出白浆无码国产| 久久久久久综合一区中文字幕| 无码人妻久久一区二区三区蜜桃| 久久精品亚洲一区二区三区浴池 | 97久久国产亚洲精品超碰热| 亚洲欧美久久久久9999| 精品精品国产自在久久高清 | 人妻无码αv中文字幕久久 | 久久精品国产精品青草app| 久久亚洲精品成人无码网站| 九九热久久免费视频| 国产∨亚洲V天堂无码久久久 | 久久精品一区二区| 亚洲狠狠婷婷综合久久久久 | 亚洲午夜精品久久久久久人妖| 久久久久久久久久久精品尤物| 久久夜色撩人精品国产小说| 久久最新精品国产| 国产精品一久久香蕉产线看| 久久精品无码专区免费青青| 久久婷婷色综合一区二区| 国产精品嫩草影院久久| 成人久久精品一区二区三区| 久久99久久99精品免视看动漫| 模特私拍国产精品久久| 四虎国产精品免费久久| 伊人情人综合成人久久网小说| 久久久精品国产亚洲成人满18免费网站 | 久久电影网2021|