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

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

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

    人在江湖

      BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
      82 Posts :: 10 Stories :: 169 Comments :: 0 Trackbacks

    零零碎碎地,學(xué)習(xí)過(guò)很多輪設(shè)計(jì)模式。總是學(xué)過(guò)就忘。后來(lái)就在google docs上做了一系列筆記,方便復(fù)習(xí)。最近把這些筆記搬家到blogjava上了,一邊搬家,一邊又復(fù)習(xí)一遍。學(xué)習(xí)設(shè)計(jì)模式有兩個(gè)意義:

    一、學(xué)習(xí)設(shè)計(jì)模式最重要的是了解模式的應(yīng)用場(chǎng)景。編程遇到特定場(chǎng)景的話,要有意識(shí)聯(lián)想到設(shè)計(jì)模式,哪怕細(xì)節(jié)忘了也沒(méi)關(guān)系,翻翻書(shū)就找到了。

    二、提高設(shè)計(jì)的思想。學(xué)習(xí)設(shè)計(jì)模式的時(shí)候,要體會(huì)模式精妙之處,當(dāng)想明白大師思想和自己的差距的時(shí)候,差距就縮短了一點(diǎn)兒。

    有的模式平淡無(wú)奇,應(yīng)用卻廣泛。有的模式設(shè)計(jì)精巧,應(yīng)用場(chǎng)景卻不易遇到。無(wú)論如何,要么掌握工具,要么學(xué)到思想,都是收獲。

     

    最適合簡(jiǎn)單概括設(shè)計(jì)模式的是UML圖,收集了一個(gè)非常好的資源,分享在我的sky drive網(wǎng)絡(luò)硬盤(pán)上,包含23種設(shè)計(jì)模式的UML圖

    http://cid-d8b11f9bf86fecfa.office.live.com/self.aspx/.Public/books/designpatternscard.pdf

     

    設(shè)計(jì)模式可以分為三類:behavioural, structural, creational

    behavioural 11 種

    1. Memento(備忘錄)

    精巧程度: 5星

    應(yīng)用廣泛:2星

    memento適合保存/恢復(fù)狀態(tài)的場(chǎng)景。分為寬接口和窄接口。學(xué)習(xí)就要學(xué)窄接口!

    具體請(qǐng)見(jiàn): http://www.tkk7.com/vcycyv/archive/2011/02/08/343949.html

     

    2. Chain of Responsibility(責(zé)任鏈)

    精巧程度: 3星

    應(yīng)用廣泛: 3星

    適合用在"一系列handler”的場(chǎng)景下。分為純和不純兩種,好像女孩兒也可以這么分?

    具體請(qǐng)見(jiàn):

    http://www.tkk7.com/vcycyv/archive/2011/02/12/344167.html

     

    3. Observer(觀察者)

    因?yàn)閖ava里有Obserable和Observer, 所以通常在java里不會(huì)自己設(shè)計(jì)觀察者模式。

     

    4. Command(命令模式)

    精巧程度:4星

    應(yīng)用廣泛:3星

    command模式用來(lái)解耦invoker和receiver.

    具體請(qǐng)見(jiàn):

    http://www.tkk7.com/vcycyv/archive/2011/02/12/344168.html

     

    5. State(狀態(tài)模式)

    精巧程度:4星

    應(yīng)用廣泛:3星

    OO編程如果出現(xiàn)多個(gè)相同的if…else條件,應(yīng)該考慮用state模式重構(gòu)。work flow的狀態(tài)器也是基于State模式的。

    具體請(qǐng)見(jiàn):

    http://www.tkk7.com/vcycyv/archive/2011/02/09/343998.html

     

    6. Interpreter

    精巧程度: N/A

    應(yīng)用廣泛: 1星

    據(jù)說(shuō)只有搜索引擎才用得上這個(gè)模式,反正我每次學(xué)設(shè)計(jì)模式的時(shí)候,都把這個(gè)跳過(guò)去,就是不喜歡,抱歉。

     

    7. Strategy(策略模式)

    精巧程度: 2星

    應(yīng)用廣泛:4星

    用來(lái)封裝不同算法。從uml圖上看和state模式一樣。 因?yàn)檫@個(gè)太簡(jiǎn)單了,所以沒(méi)記筆記,這個(gè)忘不了。

     

    8. Iterator(迭代子)

    Java Collection都可以迭代,在java上不需要格外設(shè)計(jì)iterator。

     

    9. Template Method(模板方法)

    精巧程度:2星

    應(yīng)用廣泛:4星

    見(jiàn)名知義。太簡(jiǎn)單了,學(xué)過(guò)一遍就不會(huì)忘。但是這個(gè)應(yīng)用非常廣泛!

     

    10. Mediator(仲裁者)

    精巧程度:4星

    應(yīng)用廣泛:1星

    用來(lái)解耦多個(gè)peer。個(gè)人覺(jué)得這個(gè)模式多半會(huì)讓mediator十分臃腫,mediator本身需要有很清晰的設(shè)計(jì)才能使用。應(yīng)用場(chǎng)景恐怕也少。

    具體請(qǐng)見(jiàn):

    http://www.tkk7.com/vcycyv/archive/2011/02/08/343951.html

     

    11. Visitor(訪問(wèn)者)

    精巧程度:5星

    應(yīng)用廣泛:2星

    collection里存一個(gè)類系的entry時(shí),使用visitor模式可以避免instance of的使用。更重要的是方便擴(kuò)展類系。

    具體請(qǐng)見(jiàn):

    http://www.tkk7.com/vcycyv/archive/2011/02/13/344194.html

     

    Structure 7種

    12. adapter(適配器)

    精巧程度:2星

    應(yīng)用廣泛:1星

    個(gè)人覺(jué)得Adaptee由第三方提供的時(shí)候才可能用上這個(gè)模式[vcycyv編輯:后來(lái)意識(shí)到,這個(gè)評(píng)論不客觀。adaptee實(shí)現(xiàn)核心功能,通過(guò)adapter暴露多種訪問(wèn)方式的情況下,adaptee也是自己寫(xiě)的,而不是第三方的]。簡(jiǎn)單應(yīng)用范圍又窄,略

     

    13. Proxy(代理)

    精巧程度:2星

    應(yīng)用廣泛:5星

    aop是代理模式的一種發(fā)揮。Spring和Hibernate都大量使用proxy。可以引申學(xué)學(xué)JDK的dynamic proxy。模式簡(jiǎn)單,略。

     

    14. Bridge

    精巧程度: 5星

    應(yīng)用廣泛: 3星

    Bridge在技術(shù)上是strategy的進(jìn)一步發(fā)揮,但側(cè)重在實(shí)現(xiàn)與抽象的解耦。

    具體見(jiàn):

    http://www.tkk7.com/vcycyv/archive/2011/02/08/343950.html

     

    15. Composite

    精巧程度: 4星

    應(yīng)用廣泛: 3星

    適用于樹(shù)狀結(jié)構(gòu)。

    具體見(jiàn):

    http://www.tkk7.com/vcycyv/archive/2011/02/13/344209.html

     

    16. Decorator(裝飾)

    精巧程度: 5星

    應(yīng)用廣泛:3星

    在java I/O中廣泛使用。為了解決“類爆炸”的問(wèn)題。

    具體請(qǐng)見(jiàn):

    http://www.tkk7.com/vcycyv/archive/2011/02/09/343997.html

     

    17. Facade(門(mén)面)

    連個(gè)UML圖都沒(méi)有,算神馬模式?

     

    18. Flyweight

    精巧程度:5星

    應(yīng)用廣泛:2星

    分“單純”“復(fù)合”兩種,本身包含了工廠方法模式。一系列對(duì)象如果他們都有某部分屬于特定集合,就讓他們共享這個(gè)特定集合以節(jié)省資源。

    具體請(qǐng)見(jiàn):

    http://www.tkk7.com/vcycyv/archive/2011/02/12/344169.html

     

    Creational 6 種

    19. Factory Method(工廠方法)

    精巧程度:3星

    應(yīng)用廣泛:4星

    兩個(gè)變種,一個(gè)是根據(jù)參數(shù)創(chuàng)建對(duì)象,一個(gè)是factory類系對(duì)應(yīng)產(chǎn)品類系。面向接口編程在創(chuàng)建模式的體現(xiàn)。

    具體請(qǐng)見(jiàn):

    http://www.tkk7.com/vcycyv/archive/2011/02/13/344176.html

     

    20. Abstract Factory(抽象工廠)

    精巧程度:5星

    應(yīng)用廣泛:1星

    只有產(chǎn)品有兩個(gè)類系的時(shí)候才用得上。

    具體請(qǐng)見(jiàn):

    http://www.tkk7.com/vcycyv/archive/2011/02/15/344390.html

     

    21. Builder

    精巧程度: 5星

    應(yīng)用廣泛: 2星

    產(chǎn)品分部分,并且build的過(guò)程不定的時(shí)候考慮用這種模式。是模板模式的一種發(fā)揮

    具體請(qǐng)見(jiàn):

    http://www.tkk7.com/vcycyv/archive/2011/02/09/343995.html

     

    22. Prototype(原型)

    java有cloneable的支持,所以通常不需要自己設(shè)計(jì)prototype. java用prototype的時(shí)候注意深復(fù)制淺復(fù)制的問(wèn)題。prototype之外的一個(gè)選擇是提供一個(gè)constructor接受本類型對(duì)象作為參數(shù),這個(gè)方式更加實(shí)用!

     

    23. singleton(單態(tài))

    古典的singleton分為懶漢,餓漢兩種。JDK1.5之后可以用唯一entry 的enum作為singleton的實(shí)現(xiàn)。好處有兩點(diǎn),一是簡(jiǎn)單。二是不需要格外處理serializable的情況

    posted on 2011-02-15 22:43 人在江湖 閱讀(7897) 評(píng)論(2)  編輯  收藏 所屬分類: design pattern

    Feedback

    # re: 串講23種設(shè)計(jì)模式 2011-02-20 17:21 tbw淘寶
    寫(xiě)得非常的詳細(xì),感謝博主整理。  回復(fù)  更多評(píng)論
      

    # re: 串講23種設(shè)計(jì)模式 2012-01-13 11:12 human7912
    要再詳細(xì)些  回復(fù)  更多評(píng)論
      

    主站蜘蛛池模板: 男人的天堂亚洲一区二区三区| 日本在线高清免费爱做网站| 一级午夜a毛片免费视频| 免费看搞黄视频网站| 女人被男人桶得好爽免费视频| 国产区卡一卡二卡三乱码免费| 亚洲av无码无在线观看红杏| 亚洲国产无线乱码在线观看| 久久久久成人片免费观看蜜芽| 免费观看国产精品| 亚洲Aⅴ在线无码播放毛片一线天 亚洲avav天堂av在线网毛片 | 在线综合亚洲欧洲综合网站| 大地资源网高清在线观看免费| 国产gav成人免费播放视频| 亚洲精品乱码久久久久久蜜桃图片| 四虎www成人影院免费观看| 亚洲国产午夜精品理论片在线播放| 国产免费怕怕免费视频观看| 成人免费视频一区二区| 最近最好的中文字幕2019免费| 亚洲久本草在线中文字幕| jizz免费观看| 午夜国产羞羞视频免费网站| 一本一道dvd在线观看免费视频 | 国产高清免费视频| 国产成A人亚洲精V品无码性色| 美女被免费网站视频在线| 无码日韩人妻av一区免费| 亚洲特级aaaaaa毛片| 亚欧日韩毛片在线看免费网站| 亚洲日本乱码一区二区在线二产线| 亚欧免费一级毛片| 亚洲伊人久久大香线蕉AV| 无码精品A∨在线观看免费| 精品亚洲成A人在线观看青青| 成人av免费电影| 成人片黄网站色大片免费观看cn | 国产精品成人免费一区二区| 亚洲天堂一区二区三区| 国产成人免费高清在线观看| 精品国产亚洲AV麻豆 |