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

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

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

    Terry.Li-彬

    虛其心,可解天下之問;專其心,可治天下之學(xué);靜其心,可悟天下之理;恒其心,可成天下之業(yè)。

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      143 隨筆 :: 344 文章 :: 130 評論 :: 0 Trackbacks

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

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

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

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

    ?

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

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

    ?

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

    behavioural 11 種

    1. Memento(備忘錄)

    精巧程度: 5星

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

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

    具體請見: http://www.tkk7.com/vcycyv/archive/2011/02/08/343949.html

    ?

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

    精巧程度: 3星

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

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

    具體請見:

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

    ?

    3. Observer(觀察者)

    因為java里有Obserable和Observer, 所以通常在java里不會自己設(shè)計觀察者模式。

    ?

    4. Command(命令模式)

    精巧程度:4星

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

    command模式用來解耦invoker和receiver.

    具體請見:

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

    ?

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

    精巧程度:4星

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

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

    具體請見:

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

    ?

    6. Interpreter

    精巧程度: N/A

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

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

    ?

    7. Strategy(策略模式)

    精巧程度: 2星

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

    用來封裝不同算法。從uml圖上看和state模式一樣。 因為這個太簡單了,所以沒記筆記,這個忘不了。

    ?

    8. Iterator(迭代子)

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

    ?

    9. Template Method(模板方法)

    精巧程度:2星

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

    見名知義。太簡單了,學(xué)過一遍就不會忘。但是這個應(yīng)用非常廣泛!

    ?

    10. Mediator(仲裁者)

    精巧程度:4星

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

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

    具體請見:

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

    ?

    11. Visitor(訪問者)

    精巧程度:5星

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

    collection里存一個類系的entry時,使用visitor模式可以避免instance of的使用。更重要的是方便擴展類系。

    具體請見:

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

    ?

    Structure 7種

    12. adapter(適配器)

    精巧程度:2星

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

    個人覺得Adaptee由第三方提供的時候才可能用上這個模式。簡單應(yīng)用范圍又窄,略

    ?

    13. Proxy(代理)

    精巧程度:2星

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

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

    ?

    14. Bridge

    精巧程度: 5星

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

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

    具體見:

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

    ?

    15. Composite

    精巧程度: 4星

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

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

    具體見:

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

    ?

    16. Decorator(裝飾)

    精巧程度: 5星

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

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

    具體請見:

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

    ?

    17. Facade(門面)

    連個UML圖都沒有,算神馬模式?

    ?

    18. Flyweight

    精巧程度:5星

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

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

    具體請見:

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

    ?

    Creational 6 種

    19. Factory Method(工廠方法)

    精巧程度:3星

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

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

    具體請見:

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

    ?

    20. Abstract Factory(抽象工廠)

    精巧程度:5星

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

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

    具體請見:

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

    ?

    21. Builder

    精巧程度: 5星

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

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

    具體請見:

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

    ?

    22. Prototype(原型)

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

    ?

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

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

    posted on 2011-02-16 09:01 禮物 閱讀(660) 評論(0)  編輯  收藏 所屬分類: 設(shè)計模式

    只有注冊用戶登錄后才能發(fā)表評論。

    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 久久午夜羞羞影院免费观看| 久久亚洲精品中文字幕无码| 少妇无码一区二区三区免费| 日本中文字幕免费看| 亚洲日本久久久午夜精品| 亚洲国产精品一区| 成人午夜亚洲精品无码网站| 国产zzjjzzjj视频全免费 | 亚洲日韩乱码久久久久久| 亚洲欧洲∨国产一区二区三区| 四虎永久免费网站免费观看| 啦啦啦中文在线观看电视剧免费版 | 欧美大尺寸SUV免费| 日本在线看片免费人成视频1000 | 国产成人一区二区三区免费视频| 麻豆视频免费观看| 99热在线观看免费| 午夜精品一区二区三区免费视频 | 亚洲Av无码乱码在线znlu| 四虎影院在线免费播放| 日韩在线免费视频| 7723日本高清完整版免费| 最近中文字幕国语免费完整| 亚洲av无码国产精品夜色午夜| 亚洲日韩中文字幕日韩在线| 国产资源免费观看| 国产zzjjzzjj视频全免费 | 国产成人精品日本亚洲网址| 亚洲人成网站在线观看播放青青| 91精品国产亚洲爽啪在线影院| 亚洲国产一区国产亚洲| 亚洲一级二级三级不卡| 亚洲一区二区三区四区在线观看| 亚洲第一区香蕉_国产a| 久久精品国产亚洲AV无码娇色| 亚洲精品在线免费观看| 亚洲一区二区三区在线观看蜜桃| 久久精品国产亚洲av麻豆图片| 亚洲欧美乱色情图片| 国产亚洲情侣久久精品| 一个人看的在线免费视频|