1. 程式人生 > >設計模式的總結

設計模式的總結

一對多 mil 句子 控制 產品 避免 利用 簡單的 適配

學習設計模式主要是利用早上的時間,習慣於早起,之前學習的一些模式都做了一些記錄,基於自己理解的記錄。還有一些學習過,沒有做記錄的,今天就對他們做一個總結。方便自己以後的使用。

所謂的設計模式,是用的多了,方便,符合幾大原則,有優點就有缺點,有適用場景就有不適用場景,所以模式是固定的,人的思維是不固定,怎麽在這些固定的事物上來挖掘出自己不固定的思維方式,可以做到舉一反三,舉一反十,這才是值得好好思考的事情。

學習是有規律的,是有方法的,不同的事物,不同的人,不同的時間,不同的場合所采用的方式都不相同,我覺得無論學什麽,學到精華,學到思想,學以至用,什麽是至用就像自己創造的它一樣,但很顯然我還沒有達到,之所以沒有達到,是花費的時間不夠多,是所需要的基本知識不具備,還有那個很少卻起關鍵作用的天賦,不要覺得天賦不重要,天賦很重要,努力也很重要,不扯其他了,摘錄了一些模式特色的記錄。從設計模式的分類來看有三大塊:創建型,結構型,行為型。

創建型模式

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

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

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

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

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

為什麽需要創建型模式?

隱藏了這些類的實例是如何被創建和放在一起,整個系統關於這些對象所知道的是由抽象類所定義的接口。這樣,創建型模式在創建了什麽,誰創建它,它是怎麽被創建的,以及何時創建這些方面提供了很大的靈活性。

什麽時候考慮用創建型模式?

當一個系統應該獨立於它的產品創建,構成和表示時,應該考慮用創建性模式。

結構型模式

適配器:是將一個類的接口轉換成客戶希望的另外一個接口,適配器模式使得原本由於接口不兼容而不能一起工作的類可以一起工作。想使用一個已經存在的類,而它的接口不符合要求,或者希望創建一個可以復用的類,該類可以與其他不相關的類或不可預見的類協同工作。

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

組合:將對象組合成樹形結構以表示部分與整體的層次結構,組合模式使得用戶對單個對象和組合對象的使用具有一致性。通過對象組合的方式,把兩個角色之間的繼承關系改為了組合的關系,從而使這兩者可以應對各自獨立的變化。客戶可以一致地使用組合當結構和單個對象。任何用到基本對象的地方都可以使用組合對象。

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

外觀:為子系統中的一組接口提供一個一致的界面,外觀模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。如果兩個類不必直接通信,那麽就不要讓這兩個類發生直接的相互作用。應該讓一個軟件中的子系統間的通信和相互依賴關系達到最小,而個體辦法就是引入一個外觀對象,它為子系統間提供了一個單一而簡單的屏障。

享元:為運用共享技術有效地支持大量細粒度的對象。對象使得內存占用過多,而且如果都是大量重復的對象,就是資源的極大浪費。

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

行為模式

觀察者:定義對象間的一種一對多的依賴關系,當一個對象的狀態發生變化的時候,所有依賴它的對象都得到通知並被自動更新。

模板方法:定義一個操作的算法骨架,而將一些步驟延遲到子類中,模板方法使得之類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。

命令:將一個請求封裝為一個對象,從而使你可用不同的請求對客戶進行參數化:可以對象請求排隊或記錄請求,以及支持可撤銷的操作。

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

職責鏈:使多個對象都有機會處理請求,從而避免請求的發送者和接收。者之間的耦合關系。將這些對象連成一條鏈,並沿著這條鏈傳遞該請求,直到有一個對象處理它為止。

解釋器:給定一個語言,定義它的文法的一種表示,並定義一個翻譯器,這個解釋器該表示來解釋語言中的句子。

中介者:用一個中介對象來封裝一系列的對象交互,中介者使各對象不需要顯示地相互引用,從而使其耦合松散,而且可以獨立地改變它們之間的交互。

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

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

備忘錄:在不破壞封裝的前提下,捕獵一個對象內部的狀態,並在該對象之外保存這個狀態,這樣以後就可以將該對象恢復到原先保存的狀態。

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

設計模式的總結