設計模式——總結

OOTV杯超級設計模式大賽開賽了,設計模式的姐妹們爭相報名。下面我介紹一下OOTV超級設計模式大賽的與會人員。


首先是OOTV創始人——面向對象,主持人——GOF,策劃、導演、監製——抽象、封裝、繼承和多態,詳情請見http://blog.csdn.net/lxf68/article/details/43310953

評委是上圖中的六大原則:單一職責原則、開放-封閉原則、依賴倒轉原則、里氏代換原則、最少知識(迪米特法則)、合成/聚合複用原則,詳情請見http://blog.csdn.net/lxf68/article/details/43564939

參賽者一共有23人,分別分成了三組,第一組爲上圖的創建型:單例模式、建造者模式、原型模式以及三大工廠姐妹(簡單工廠模式、工廠方法模式、抽象工廠模式);第二組爲上圖的結構型:適配器模式、裝飾模式、橋接模式、組合模式、享元模式、代理模式、外觀模式;第三組爲上圖的行爲型:觀察者模式、模板方法模式、命令模式、狀態模式、職責鏈模式、解釋器模式、中介者模式、訪問者模式、策略模式、備忘錄模式、迭代器模式。

比賽現場:

第一組:創建型模式

抽象工廠模式:提供一個創建一系列相關或相互依賴對象的接口,而無需指定它們具體的類。

建造者模式:將一個複雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。

工廠方法模式:定義一個用於創建對象的接口,讓子類決定實例化哪一個類。工廠方法使一個類的實例化延遲到其子

                         類。

原型模式:用原型實例指定創建對象的種類,並且通過拷貝這些原型創建新的對象。

單例模式:保證一個類僅有一個實例,並提供一個訪問它的全局訪問點。

第二組:結構型模式

適配器模式:將一個類的接口轉換成客戶希望的另外一個接口。Adapter模式使得原本由於接口不兼容而不能一起工

                     作的那些類可以一起工作。

橋接模式:將抽象部分與它的實現部分分離,使它們都可以獨立地變化。

組合模式:將對象組合成樹形結構以表示‘部分-整體’的層次結構。組合模式使得用戶對單個對象和組合對象的使用具

                  有一致性。

裝飾模式:動態地給一個對象添加一些額外的職責,就增加功能來說,裝飾模式比生成子類更爲靈活。

外觀模式:爲子系統中的一組接口提供一個一致的界面,此模式定義了一個高層接口,這個接口使得這一子系統更容

                 易使用。

享元模式:運用共享技術有效地支持大量細粒度的對象。

代理模式:爲其他對象提供一種代理以控制對這個對象的訪問。

第三組:行爲型模式

觀察者模式:定義對象間的一種一對多的依賴關係,當一個對象的狀態發生變化時,所有依賴於它的對象都得到通知

                     並自動更新。

模板方法模式:定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個算法

                         的結構即可重定義該算法的某些特定步驟。

命令模式:將一個請求封裝爲一個對象,從而使你可用不同的請求對客戶進行參數化;對請求排隊或記錄請求日誌,

                  以及支持可撤銷的操作。

狀態模式:允許一個對象在其內部狀態改變時改變它的行爲,讓對象看起來似乎修改了它的類。

職責鏈模式:使多個對象都有機會處理請求,從而避免請求的發送者和接受者之間的耦合關係。將這個對象連成一條

                      鏈,並沿着這條鏈傳遞該請求,直到有一個對象處理它爲止。

解釋器模式:給定一個語言,定義它的文法的一種表示,並定義一個解釋器,這個解釋器使用該表示來解釋語言中的

                     句子。

中介者模式:用一箇中介對象來封裝一系列的對象交互。中介者使各對象不需要顯式地相互引用,從而使其耦合鬆

                     散,而且可以獨立地改變它們之間的交互。

訪問者模式:表示一個作用於某對象結構中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用於這

                     些元素的新操作。

策略模式:定義一系列的算法,把它們一個個封裝起來,並且使它們可相互替換。本模式使得算法可獨立於使用它的

                 客戶而變化。

備忘錄模式:在不破壞封裝性的前提下,捕獲一個對象的內部狀態,並對該對象之外保持這個狀態。這樣以後就可將

                     該對象恢復到原先保存的狀態。

迭代器模式:提供一種方法順序訪問一個聚合對象中各個元素,而又不暴露該對象的內部表示。

比賽已經全部結束,評委點評:六大原則

創建型模式:隱藏了這些類的實例是如何被創建和放在一起整個系統關於這些對象所知道的是由抽象類所定義的接

                     口。這樣,創建型模式在What、Who、How,以及When這些方面提供了很大的靈活性。創建型模式抽

                     象了實例化的過程,幫助一個系統獨立於如何創建、組合和表示它的那些對象。

結構型模式:被稱爲“死亡之組”,結構模式描述的是如何和組合類和對象已獲得更大的結構。

                     類模式和對象模式之間的區別是:類描述的如何通過繼承提供更有用的接口,而對象描述的是通過使用

                     對象的組合或將對象包涵在別的對象裏面以獲得更有用的結構。

行爲型模式:行爲型模式設計到算法和對象間的職責分配,不僅描述對象或類的模式,還描述它們之間的通信方式,

                     刻劃了運行時難以跟蹤的複雜的控制流,它們將你的注意力從控制流轉移到對象間的關係上來。

三種類型的模式各有各的特點,六大原則不能很好的判斷哪個優哪個劣。

各位大牛的意見呢?

總結:

二十三種設計模式,六大原則,都處在非常重要的位置,需要我們好好把握。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章