常用設計模式總結,附完整圖解

Yfeil發表於2024-06-02

UML類圖

類圖定義規則

常用設計模式總結,附完整圖解

屬性和方法前加上(+、-、#、留空)分別代表:公開(public)、私有(private)、保護(protected)、預設(default)

方法括號內為引數型別,冒號後為返回值型別

下劃線表示 靜態(static),斜體表示 抽象(abstract)

類圖關係表示法

常用設計模式總結,附完整圖解

其中 關聯、聚合、組合,比較容易混淆,它們的區別:

關聯:描述的是兩個獨立實體之間的連線,它們可以獨立存在。

聚合:描述的是整體和部分之間的關係,部分可以獨立於整體存在。

組合:描述的是一種更強的整體和部分關係,部分不能獨立於整體存在。

依賴 和 關聯 的主要區別在於:

依賴是臨時性的,而關聯是長期性的。

依賴關係通常表示一個類使用另一個類,而關聯關係表示物件之間的結構關係。

七個原則

開閉原則

對擴充套件開放,對修改關閉。

即程式要設計成擴充套件新功能時,只需新增新程式碼,而無需修改現有程式碼。

里氏替換原則

子類可以當作父類使用,且替換後不改變執行結果。

常用設計模式總結,附完整圖解

單一職責原則

一個類只負責一個職責。

依賴倒轉原則

高層模組不應該依賴底層模組,抽象不應該依賴於細節。

常用設計模式總結,附完整圖解

介面隔離原則

介面應該小而完備,避免大而臃腫。不因該強迫實現類實現不該有的功能。

常用設計模式總結,附完整圖解

合成複用原則

在程式碼複用時,優先使用組合、聚合、關聯的方式,其次考慮繼承方式。

組合、聚合、關聯、繼承的區別可參考上面《類圖關係表示法》。

最少知道原則(別稱:迪米特法則

一個類對於其他類知道的越少越好。

常用設計模式總結,附完整圖解

擴充套件:高內聚低耦合

要注意,下圖是以類的角度。從方法的角度來看,方法之間互調頻繁,也是耦合。

常用設計模式總結,附完整圖解

建立型

單例模式

1.餓漢式

缺點:類載入後立刻建立物件,較佔資源。

常用設計模式總結,附完整圖解

2.懶漢式

優點:按需載入。

缺點:使用鎖來保證併發安全,程式碼較複雜。

常用設計模式總結,附完整圖解

3.內部類式

優點:懶漢式改進版,使用JVM機制取代了鎖,同樣能保證併發安全的情況下,程式碼更簡單了。

常用設計模式總結,附完整圖解

簡單工廠模式

優點:客戶和具體商品解耦。

缺點:工廠裡硬編碼所有商品,每次新增新商品需要修改工廠程式碼,違反開閉原則。

常用設計模式總結,附完整圖解

工廠方法模式

特點:新增新商品只需新建對應工廠,無需修改其他程式碼,符合開閉原則。

常用設計模式總結,附完整圖解

抽象工廠模式

特點:每個品牌工廠可以生產多種型別的商品。

常用設計模式總結,附完整圖解

建造者模式

定義:將一個物件的建造步驟、順序、細節進行分離。

抽象建造者:定義構建產品的步驟。

具體建造者:實現每個步驟。

指揮者:決定步驟的執行順序。

常用設計模式總結,附完整圖解

結構型

代理模式

定義:透過代理類來訪問被代理類。

常用設計模式總結,附完整圖解

橋接模式

定義:將抽象與實現分離,使它們都可以獨立地變化。

常用設計模式總結,附完整圖解

介面卡模式

定義:透過包裝,讓類相容特定介面。

常用設計模式總結,附完整圖解

裝飾器模式

定義:透過包裝,實現功能動態擴充套件。

常用設計模式總結,附完整圖解

行為型

觀察者模式

定義:物件可以被訂閱,並主動通知訂閱者。

常用設計模式總結,附完整圖解

策略模式

定義:使策略能動態的切換。

常用設計模式總結,附完整圖解

模板方法模式

定義:將可變的方法延遲到子類實現。

常用設計模式總結,附完整圖解

狀態模式

定義:把類功能按不同狀態進行分離。

常用設計模式總結,附完整圖解

迭代器模式

List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");

Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
    System.out.println(iterator.next());
}

責任鏈模式

定義:多個處理者按序連線,每個處理者決定是否處理請求、是否呼叫後序。

常用設計模式總結,附完整圖解

相關文章