設計模式 經典設計模式一覽

2021-09-06 07:45:08 字數 3618 閱讀 8881

我們處理大量問題時,在很多不同的問題中重複出現的一種性質,它使得我們可以使用一種方法來描述問題實質並用本質上相同,但細節永不會重複的方法去解決,這種性質就叫模式。

乙個圍棋下得好的人知道,好的「形」對於圍棋非常重要。形是棋子在棋盤上的幾何形狀的抽象化。形就是模式(pattern),也是人腦把握和認識外界的關鍵。

1、它可以解決問題。模式不能僅僅反映問題,而必須對問題提出解決方案。

2、它所提出解決方案是正確的,而且不是很明顯的。

3、它必須是涉及軟體系統深層的結構的東西,不能僅是對已有的模組的描述。

4、它必須滿足人的審美,簡潔美觀。

•創立性模式(creationalpatterns)是類在例項化時使用的模式。

•當一些系統在創立物件時,需要動態地決定怎樣創立物件,創立哪些物件

•創立性模式告訴我們怎樣構造和包裝這些動態的決定。

•結構性模式描述類和物件怎樣結合在一起成為較大的結構。

•結構性模式描述兩種不同的東西:類與類的例項。

•行為模式設計到演算法和物件職責間的分配。

•行為模式不僅是關於類和物件的,而且還描述它們之間的作用。

•這些模式刻畫了執行時刻難以跟蹤的複雜的控制流,它幫助軟體設計者在設計軟體的時候把注意力從控制流轉移到物件間的聯絡上。

創立型

結構型

行為型

工廠方法(factory method)

介面卡(adapter)

直譯器(interpreter)

模板方法(template method)

物件

抽象工廠(abstract factory)

生成器(builder)

原型(prototype)

單態(singleton)

橋接(bridge)

組成(composite)

裝飾(decorator)

外觀(facade)

享元(flyweight)

**(proxy)

責任鏈(chain of responsibility)

命令(command)

迭代器(iterator)

中介者(mediator)

備忘錄(memento)

觀察者(observer)

狀態(state)

策略(strategy)

訪問者(visitor)

設計模式建議學習順序

學習順序

設計模式

常用程度

適用層次

引入時機

結構複雜度 變化

實現體現的原則 1

factory method

很常用**級

編碼時 簡單

子類的例項化

物件的建立工作延遲到子類

開閉原則 2

singleton

很常用**級、應用級

設計時、編碼時 簡單

唯一例項

封裝物件產生的個數 3

facade

很常用應用級、構架級

設計時、編碼時 簡單

子系統的高層介面

封裝子系統

開閉原則 4

template method

很常用**級

編碼時、重構時 簡單

算法子步驟的變化

封裝演算法結構

依賴倒置原則 5

abstract factory

比較常用

應用級設計時

比較複雜

產品家族的擴充套件

封裝產品族系列內容的建立

開閉原則 6

composite

比較常用

**級編碼時、重構時

比較複雜

複雜物件介面的統一

統一複雜物件的介面

黎克特制代換原則 7

proxy

比較常用

應用級、構架級

設計時、編碼時 簡單

物件訪問的變化

封裝物件的訪問過程

黎克特制代換原則 8

command

比較常用

應用級設計時、編碼時

比較簡單

請求的變化

封裝行為對物件

開閉原則 9

observer

比較常用

應用級、構架級

設計時、編碼時

比較簡單

通訊物件的變化

封裝物件通知

開閉原則 10

strategy

比較常用

應用級設計時 一般

演算法的變化

封裝演算法

黎克特制代換原則 11

builder 一般

**級編碼時 一般

物件組建的變化

封裝物件的組建過程

開閉原則 12

adapter 一般

**級重構時 一般

物件介面的變化

介面的轉換 13

bridge 一般

**級設計時、編碼時 一般

物件的多維度變化

分離介面以及實現

開閉原則 14

decorator 一般

**級重構時

比較複雜

物件的組合職責

在穩定介面上擴充套件

開閉原則 15

iterator 一般

**級、應用級

編碼時、重構時

比較簡單

物件內部集合的變化

封裝物件內部集合的使用

單一職責原則 16

mediator 一般

應用級、構架級

編碼時、重構時 一般

物件互動的變化

封裝物件間的互動

開閉原則 17

memento 一般

**級編碼時

比較簡單

狀態的輔助儲存

封裝物件狀態的變化

介面隔離原則 18

state 一般

應用級設計時、編碼時 一般

物件狀態的變化

封裝與狀態相關的行為

單一職責原則 19

visitor 一般

應用級設計時

比較複雜

物件操作變化

封裝物件操作變化

開閉原則 20

prototype

不太常用

應用級編碼時、重構時

比較簡單

例項化的類

封裝對原型的拷貝

依賴倒置原則 21

flyweight

不太常用

**級、應用級

設計時 一般

系統開銷的優化

封裝物件的獲取 22

chain of resp.

不太常用

應用級、構架級

設計時、編碼時

比較複雜

物件的請求過程

封裝物件的責任範圍 23

interpreter

不太常用

應用級設計時

比較複雜

領域問題的變化

封裝特定領域的變化

java設計模式一覽

按照目的來分,設計模式可以分為建立型模式 結構型模式和行為型模式。建立型模式用來處理物件的建立過程 結構型模式用來處理類或者物件的組合 行為型模式用來對類或物件怎樣互動和怎樣分配職責進行描述。img 建立型模式用來處理物件的建立過程,主要包含以下5種設計模式 工廠方法模式 factory metho...

PHP經典設計模式

單例模式 class site 獲取本例唯一例項 public static function getinstance sitename 微語錄 return self instance 用工廠模式生成單一例項 class factory 物件註冊樹 1.註冊set 把物件掛上樹 2.獲取get 把...

經典設計模式 單例模式

特點 單例類只能有乙個例項 單例類必須自己建立自己的唯一例項 單例類必須給所有其他物件提供這一物件例項 單例模式的應用場景 1.windows的task manager 任務管理器 就是很典型的單例模式 2.的計數器,一般也是採用單例模式實現,否則難以同步。3.應用程式的日誌應用,一般都何用單例模式...