Head First Design Patterns

來源:互聯網
上載者:User

    在更大的計劃之前,先溫習一下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),不算很優雅的一個模式。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.