此處設計模式的學習是用的是大話設計模式這本書。作者程杰。
其博客 :https://www.cnblogs.com/cj723/
第零章 UML類圖
例如:

image.png
箭頭的作用


image.png

image.png

image.png

image.png

image.png

image.png
第一章 簡單工廠模式
- 優(yōu)質(zhì)代碼的標準 : 并非無錯
- 封裝繼承多態(tài):耦合度降低 代碼復用 易于修改
工廠模式

image.png
如圖,工廠類負責寫一個判斷輸入的字符的邏輯,負責返回一個運算類。獲得運算類直接在客戶端使用
- 優(yōu)點&缺點
加減乘除四個運算邏輯分離,如果還需要加上乘方類,只需要添加類(繼承運算類),然后在工廠類寫上解析輸入串邏輯,最后達到用戶端和運算類的解耦。然后簡單工廠模式?jīng)]有完成擴展-封閉原則,做到這點需要方法工廠模式。
第二章 策略模式
策略模式:定義算法家族,分別分裝,然后在根據(jù)需要來使用。

- 優(yōu)點&缺點
- 使用策略模式,使得各類別算法更容易進行單元測試
- 把策略模式與工廠模式結構,讓客客戶端不需要在使用工廠類和算法類,只需要使用工廠策略類,耦合度更低。
第三章 單一職責原則
- 單一職責原則
一個雷而言,只有一個引起他變化的原因。即俄羅斯方塊,分來游戲邏輯,頁面邏輯。例如SpringBoot,分controller、dao、service層
第四章 開放-封閉原則
- 定義:軟件實體(類,模塊,函數(shù))等可以擴展,但是不能修改。
例如,我們在簡單工廠模式中的工廠增加乘方類,那么我就要修改工廠類的解析程序,這是違反這個原則,如果,我們做到只需要加上乘方類,其他代碼不改變,還是可以得到正確結果的話,這就開發(fā)封閉原則。這也說明這個代碼易于維護。
第五章 依賴倒轉原則
- 定義
- 高層的模塊不應該依賴底層的模塊。這兩個模塊已改依賴接口
- 抽象不該依賴細節(jié),細節(jié)已改依賴抽象
例如,我們電腦組裝時,我們cpu,內(nèi)存都可以買不同品牌,說明這些硬件面對接口編程,他們不相互依賴,依賴的是接口。在例如,寫網(wǎng)站是,你寫了調(diào)用數(shù)據(jù)庫的函數(shù),而你的高層調(diào)用這個函數(shù)。但是突然你要換數(shù)據(jù)庫了,那么你的高層就要被重寫了。如果你的高層是通過接口調(diào)用的,那么,只需要實現(xiàn)接口捷星,不需要重寫接口
第六章 裝飾模式
- 定義 動態(tài)地給一個對象添加一些額外的職責,對于增加功能職責,裝飾模式比生成子類更加合適
裝飾者UML圖

image.png
看不懂的話看一下書的代碼。
簡單解釋是,祖父類是有一個處理函數(shù),子類都會用一個祖父類的引用,每個子類的祖父類引用可以套上其他子類,然后在處理函數(shù)調(diào)用這個引用的處理函數(shù),就能一直堆砌這個處理函數(shù)。
ConcreteComponent 類用來在客戶端二代增加職責。
第七章 代理模式

image.png

- 應用
- 隱藏地址空間
2.對于開銷很大的對象,通過他來存放。比如瀏覽器看圖片 - 安全代理,權限控制
4.只能指引,指當調(diào)用真實對象,代理處理另外一些事
第八章 工廠方法模式

image.png
例子:

- 優(yōu)缺點
比起簡單工廠模式,遵守的開放等比原則,但是對于使用某個工廠的邏輯,需要寫在客戶端,不過這可以通過反射機制來實現(xiàn)(反射機制在第十五章節(jié))
第九章 原型模式
定義:通過原型實例來指定創(chuàng)建對象的種類,并且通過拷貝這些原型來創(chuàng)建新的對象。
-
結構圖:
image.png 總結
這個模式主要應對的是深拷貝與淺拷貝的問的,對于需要拷貝功能的類,我們靠椅抽象出一個clone的接口。
第十章 模板方法模式
- 定義:定義一個操作中的算法骨架,且將一些步驟延遲到子類中。模板方法使得子類可以不改變一個算法的結構計科重定義該算法的某些的步驟。
自己注解:我們把一個具有相同的內(nèi)容的方法按順序分離出來,對需要特定化的方法標定虛函數(shù),這樣的話,子類重寫虛函數(shù)在搭配上相同的方法就能實現(xiàn)目的,這就符合了開放封閉原則、依賴依賴翻轉原則。
結構圖:

image.png
- 優(yōu)點:
- 模板方法模式是把不冰的行為編譯到超類,去除子類中的重復代碼
- 模板方法模式提供了代碼復用的的平臺
- 將可變方法與不可變方法分離出來,幫助子類擺脫其糾纏。
