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

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

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

    模式筆記三:GOF設(shè)計(jì)模式

    大名鼎鼎的GOF的設(shè)計(jì)模式是最著名的一本里程碑的作品
    =模式分類=

    =模式之間的關(guān)系=

    =如何應(yīng)用模式=
    DP中的引言說(shuō)得很好,如何應(yīng)該模式來(lái)解決設(shè)計(jì)問(wèn)題
    * 尋找合適的對(duì)象
    對(duì)象包括數(shù)據(jù)和操作, 對(duì)象在收到請(qǐng)求(或消息)后, 執(zhí)行相應(yīng)的操作
    客戶請(qǐng)求是使對(duì)象執(zhí)行操作的唯一方法, 操作又是對(duì)象改變內(nèi)部數(shù)據(jù)的唯一方法
    (這就是封裝的意義,之所以強(qiáng)調(diào)對(duì)象的成員應(yīng)該是私有的原因)

    OOD最困難的部分就是將系統(tǒng)分解成對(duì)象集合,因?yàn)橐紤]許多因素:
    封裝,粒度,信賴關(guān)系,靈活性,性能,演化,復(fù)用等等,它們之間也互相有所影響或沖突.

    設(shè)計(jì)模式可以幫助我們確定那些并不明顯的抽象和描述這些抽象的對(duì)象,如Strategy, State,etc.

    ==決定對(duì)象的粒度==
    如何決定對(duì)象的大小,數(shù)目以及范圍呢, 設(shè)計(jì)模式亦有所幫助:
    Facade 描述了怎樣用對(duì)象表示完整的子系統(tǒng)
    Flyweight
    Abstact Factory
    Builder
    Visitor
    Command

    ==指定對(duì)象接口==
    對(duì)象接口描述了該對(duì)象所能接受的全部請(qǐng)求的集合, 也就是它能夠提供哪些服務(wù)(方法)
    當(dāng)給對(duì)象發(fā)送請(qǐng)求時(shí), 所引起的具體操作既與請(qǐng)求本身有關(guān),又與接受對(duì)象有關(guān)
    支持相同請(qǐng)求的不同對(duì)象可能對(duì)請(qǐng)求激發(fā)的操作有不同的實(shí)現(xiàn)(動(dòng)態(tài)綁定和多態(tài))

    而設(shè)計(jì)模式通過(guò)確定接口的主要組成部分及經(jīng)接口發(fā)送的數(shù)據(jù)類型, 來(lái)幫助你定義接口.
    DP也許還會(huì)告訴你接口中不應(yīng)包括哪些東西, 比如Memento模式所規(guī)定的接口
    DP也指定了接口之間的關(guān)系,特別地,它常要求一些類具有相同或相似的接口,或?qū)σ恍╊惖慕涌谧鞒鲆恍┫拗?br /> 如Decorator, Proxy模式要求修飾/代理對(duì)象和被修飾/受代理的對(duì)象接口保持一致
    Visitor模式中Vistor接口必須反映能訪問(wèn)的對(duì)象的所有類

    ==描述對(duì)象的實(shí)現(xiàn)==
    * 類繼承還是接口繼承呢
    * 針對(duì)接口編程,而不是針對(duì)實(shí)現(xiàn)編程

    ==運(yùn)用復(fù)用機(jī)制==
    1.優(yōu)先使用對(duì)象組合,而不是類繼承
    2.委托
    3.繼承和泛型的比較

    ==關(guān)聯(lián)運(yùn)行時(shí)刻和編譯時(shí)刻的結(jié)構(gòu)==

    ==設(shè)計(jì)應(yīng)支持變化==
    * 設(shè)計(jì)中常出現(xiàn)的問(wèn)題
    ** 通過(guò)顯式地指定一個(gè)類來(lái)創(chuàng)建對(duì)象
    *** Factory , Prototype
    ** 對(duì)特殊操作的依賴
    *** Chain of Reponsibility, Command
    ** 對(duì)硬件和軟件平臺(tái)的依賴
    *** Abstract Factory, Bridge
    ** 對(duì)對(duì)象表示或?qū)崿F(xiàn)的依賴
    ** 算法依賴
    ** 緊耦合
    *** Abstract Factory, command, facade, mediator, observere,chain of responsibility
    ** 通過(guò)生成子類來(lái)擴(kuò)充功能
    *** Bridge, Chain of Reponsibility, composite, Decorator, Observer, Strategy
    ** 不能方便地對(duì)類進(jìn)行修改
    *** Adapter, Decorator, visitor

    =如何選擇設(shè)計(jì)模式=
    * 考慮設(shè)計(jì)模式是如何解決設(shè)計(jì)問(wèn)題的
    * 瀏覽模式的意圖部分
    * 研究模式怎樣互相關(guān)聯(lián)
    * 研究目的相似的模式
    * 檢查重新設(shè)計(jì)的原因
    * 考慮你的設(shè)計(jì)中哪些是可變的

    =怎樣使用設(shè)計(jì)模式=
    * 大致瀏覽一遍模式
    * 回頭研究結(jié)構(gòu)部分
    * 看代碼示例部分
    * 選擇模式參考者的名字, 使它們?cè)趹?yīng)用上下文中有意義
    * 定義類
    * 定義模式中專用于應(yīng)用的操作名稱
    * 實(shí)現(xiàn)執(zhí)行模式中責(zé)任和協(xié)作的操作


    posted on 2008-08-10 22:01 fantasyamin 閱讀(901) 評(píng)論(0)  編輯  收藏 所屬分類: Java

    <2008年8月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲人成国产精品无码| 女人被男人躁的女爽免费视频| 亚洲精品国产日韩无码AV永久免费网| 亚洲美国产亚洲AV| 色妞WWW精品免费视频| 亚洲精品福利你懂| 性做久久久久久免费观看| 91亚洲精品自在在线观看| 国内精品免费麻豆网站91麻豆| 亚洲美女视频一区| 又粗又大又黑又长的免费视频| 亚洲人成依人成综合网| 91高清免费国产自产拍2021| 亚洲最大在线观看| 四虎永久在线精品免费网址| 亚洲精品av无码喷奶水糖心| 国产免费怕怕免费视频观看| 三级片免费观看久久| 好看的电影网站亚洲一区| 亚洲精品免费观看| 亚洲粉嫩美白在线| 免费一级毛片免费播放| 中文字幕在线免费视频| 亚洲AV永久无码精品一百度影院| 在线观看免费av网站| 久久狠狠爱亚洲综合影院| 日本免费人成视频播放| 国产精品免费一区二区三区| 亚洲av激情无码专区在线播放 | 久久亚洲最大成人网4438| 最近中文字幕免费mv视频7| 国产亚洲情侣久久精品| 伊人久久大香线蕉亚洲五月天| 99久久久国产精品免费蜜臀| 亚洲色少妇熟女11p| 亚洲精品无码99在线观看| 日韩免费视频一区二区| 亚洲熟女乱色一区二区三区| 伊人久久大香线蕉亚洲| 99久久免费精品国产72精品九九| 国产精品内射视频免费|