當前位置:開發者網絡 >> 技術教程 >> JSP教程 >> Java技巧及代碼 >> 內容
精彩推薦
分類最新教程
分類熱點教程
    
Head First Design Patterns
作者:未知
日期:2005-04-30
人氣:
投稿:(轉貼)
來源:未知
字體:
收藏:加入瀏覽器收藏
以下正文:

    在更大的計劃之前,先溫習一下Design Pattern的功課。    看了《Head First Design Patterns》裡講Decorator的樣章,發現JOLT大獎不是白拿的,敘事能力之強,表達之清晰,不是那些滿腹經倫的老先生可以比的。而且整個Pattern的講述過程循序漸進,真的可以保證--小白都能學會設計模式。    可惜就只有樣章。Head First系列的電子書都不好找,只好還是翻出老先生們的書來看。    這次溫習很快做完,其實GOF80%的模式,都是基於一個原則:

    優先使用對像組合,而不是類繼承.

    初學OO的人,都習慣用現實世界去映射程序世界,繼承是最自然的思路。GOF其實就是在扭轉這個思路,讓大家習慣使用組合,委託和程序對象。     組合機制只要根據兩大原則,就可以變化出絕大部分的GOF模式.     1.任何耦合都可以通過增加一個中間層來解耦      代表模式有:   Facade , Mediator , Adapter  和 Factory/Abstract Factory , Proxy            2.通過組合來擴充對像特性,可以避免純繼承引起的類爆炸      代表模式有:  Bridge , Decorator , Chain of Response , Strategy/Command

     3.另外還有些獨立的常用模式如Singleton , Visitor , Observe

     寫給自己看的重放慢鏡:    1.Facade : 為了減低一個系統和另一個系統的內部類之間的耦合性。建立對像A代理系統的主要功能

    2.Mediator:為了減低兩個對像之間的耦合性。建立一個中間對像C,同時具有A和B的實例,並把C賦給A和B

    3.Adapter: 為了匹配不同的對象使用同一接口。建立對像B,代理A的方法並使其接口匹配。

    4.factory: 為了不依賴於具體對像而依賴於接口的創建對象。程序通過Factory獲得對象。

    5.Proxy:   除了不依賴於具體對象,還能在過程中插入動作.程序通過Proxy調用對象的方法(AOP)

    6.Bridge:  如果對像特徵向兩個方向發展,Bridge能夠避免兩組對像特徵的排列組合引起類爆炸。一組特徵如大杯、中杯,一組特徵如加奶、加糖。把其中一組特徵抽像分離為接口2,把接口2的實例傳入到主繼承樹中。

    7.Decorator: 通過包裹原對象,為原對象的動作添加新的動作。新類繼承於原類,有原類同樣的方法和原類的實體調用新類的方法時,會調用原類實體的原方法,再加上新類對其的擴展。

    8.COR:     通過安排職責鏈,讓各對像根據情況添加自己的動作。每個對象都有下一個對象的指針,根據情況完成自己的操作後,把控制傳給下一位。Apahce Jarkarta Commands有chains庫。

    9.Strategy/Command: Template模式的對立物,把動作封裝為對像進行組合。

    10.Observe: 通過一套機制,監控Observebal對象的狀態變化。JDK實現了兩套接口進行輔助。

    11.Visitor: 通過一套機制,讓獨立對像遍歷組合裡的所有對象,執行共同的動作。被訪問對像有個accept(訪問者)函數,在函數里面調用訪問者.訪問(this),不算很優雅的一個模式。
相關文章: