設計模式總結

1.簡單工廠模式

簡單工廠模式又稱之爲靜態工廠方法,屬於創建型模式。在簡單工廠模式中,可以根據傳遞的參數不同,返回不同類的實例。簡單工廠模式定義了一個類,這個類專門用於創建其他類的實例,這些被創建的類都有一個共同的父類。

2.工廠方法模式

工廠方法模式是簡單工廠模式的延伸。在工廠方法模式中,核心工廠類不在負責產品的創建,而是將具體的創建工作交給子類去完成。也就是後所這個核心工廠僅僅只是提供創建的接口,具體實現方法交給繼承它的子類去完成。當我們的系統需要增加其他新的對象時,我們只需要添加一個具體的產品和它的創建工廠即可,不需要對原工廠進行任何修改,這樣很好地符合了“開閉原則”。

3.抽象工廠模式

抽象工廠模式提供一個接口,用於創建相關或者依賴對象的家族,而不需要明確指定具體類。抽象工廠允許客戶端使用抽象的接口來創建一組相關的產品,而不需要關係實際產出的具體產品是什麼。這樣一來,客戶就可以從具體的產品中被解耦。

4.建造者模式

建造者模式將一個複雜對象的構建與表示分離,使得同樣的構建過程可以創建不同的表示。建造者模式構建複雜對象就像造汽車一樣,是一個一個組件一個一個步驟創建出來的,它允許用戶通過制定的對象類型和內容來創建他們,但是用戶並不需要知道這個複雜對象是如何構建的,它只需要明白通過這樣做我可以得到一個完整的複雜對象實例

5.原型模式

所謂原型模式就是用原型實例指定創建對象的種類,並且通過複製這些原型創建新的對象。在原型模式中,所發動創建的對象通過請求原型對象來拷貝原型對象自己來實現創建過程,當然所發動創建的對象需要知道原型對象的類型。這裏也就是說所發動創建的對象只需要知道原型對象的類型就可以獲得更多的原型實例對象,至於這些原型對象時如何創建的根本不需要關心。

6.單例模式

單例模式確保某一個類只有一個實例,而且自行實例化並向整個系統提供這個實例

使用場景:

● 要求生成唯一序列號的環境;

● 在整個項目中需要一個共享訪問點或共享數據,例如一個Web頁面上的計數器,可以不用把每次刷新都記錄到數據庫中,使用單例模式保持計數器的值,並確保是線程安全的;

● 創建一個對象需要消耗的資源過多,如要訪問IO和數據庫等資源;

● 需要定義大量的靜態常量和靜態方法(如工具類)的環境,可以採用單例模式(當然,也可以直接聲明爲static的方式)。

7.適配器模式

適配器模式就是將一個類的接口,轉換成客戶期望的另一個接口。適配器讓原本接口不兼容的類可以合作無間。在適配器模式中,我們可以定義一個包裝類,包裝不兼容接口的對象,這個包裝類就是適配器,它所包裝的對象就是適配者。適配器提供給客戶需要的接口,適配器的實現就是將客戶的請求轉換成對適配者的相應的接口的引用。也就是說,當客戶調用適配器的方法時,適配器方法內部將調用適配者的方法,客戶並不是直接訪問適配者的,而是通過調用適配器方法訪問適配者。因爲適配器可以使互不兼容的類能夠“合作愉快”。

8.組合模式

組合模式定義瞭如何將容器對象和葉子對象進行遞歸組合,使得客戶在使用的過程中無須進行區分,可以對他們進行一致的處理。組合模式組合多個對象形成樹形結構以表示“整體-部分”的結構層次。在使用組合模式中需要注意一點也是組合模式最關鍵的地方:葉子對象和組合對象實現相同的接口。這就是組合模式能夠將葉子節點和對象節點進行一致處理的原因。

9.外觀模式

所謂外觀模式就是提供一個統一的接口,用來訪問子系統中的一羣接口。外觀模式定義了一個高層接口,讓子系統更容易使用。如下圖,是使用外觀模式後將子系統的使用變得更加簡單。在引入外觀模式後,客戶只需要與外觀角色打交道,客戶與子系統的複雜關係有外觀角色來實現,從而降低了系統的耦合度。

10.代理模式

所謂代理就通過引用一個新的對象來實現對真實對象的操作或者將新的對象當做真實對象的一個替身,這種實現的機制就是代理模式,通過引用代理對象來訪問真實對象就是代理模式的設計動機。代理模式就是給一個對象提供一個代理,並由代理對象控制對原對象的引用。在代理模式中,“第三者”代理主要是起到一箇中介的作用,它連接客戶端和目標對象。

11.命令模式

命令模式將請求封裝成對象,以便使用不同的請求、隊列或者日誌來參數化其他對象。命令模式支持可撤銷的操作。命令模式可以對發送者額接受者完全解耦,發送者也接收者之間並沒有直接的聯繫,發送者只需要知道如何發送請求,不需要關心請求是如何完成了。這就是命令模式,命令模式將方法調用給封裝起來了。

12.觀察者模式

察者模式定義了對象之間的一對多依賴關係,這樣一來,當一個對象改變狀態時,它的所有依賴者都會收到通知並且自動更新。在這裏,發生改變的對象稱之爲觀察目標,而被通知的對象稱之爲觀察者。一個觀察目標可以對應多個觀察者,而且這些觀察者之間沒有相互聯繫,所以麼可以根據需要增加和刪除觀察者,使得系統更易於擴展。

13.策略模式

所謂策略模式就是定義了算法族,分別封裝起來,讓他們之前可以互相轉換,此模式然該算法的變化獨立於使用算法的客戶。在軟件系統中有很多種方法可以實現同一個功能,比如排序算法它有冒泡排序、選擇排序、快速排序、插入排序等等。這裏我們有一種硬編碼方法,就是講所以的排序算法全部寫在一個類中,每一種算法的具體實現對應着一個方法,然後寫一個總方法通過if…else…來判斷選擇具體的排序算法,但是這樣做存在很多問題。所以爲了解決這些問題,我們可以定義一些獨立的類來封裝不同的算法,每一個獨立的類對應着一個具體的算法實現,在這裏我們就將這裏每一個獨立的類稱之爲一個策略。

14.模板方法模式

所謂模板方法模式就是在一個方法中定義一個算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以在不改變算法結構的情況下,重新定義算法中的某些步驟。模板方法模式是基於繼承的代碼複用技術的。在模板方法模式中,我們可以將相同部分的代碼放在父類中,而將不同的代碼放入不同的子類中。也就是說我們需要聲明一個抽象的父類,將部分邏輯以具體方法以及具體構造函數的形式實現,然後聲明一些抽象方法讓子類來實現剩餘的邏輯,不同的子類可以以不同的方式來實現這些邏輯。

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