目錄
- 為什么要寫設(shè)計(jì)模式系列
- 學(xué)設(shè)計(jì)模式之前,必學(xué) UML
- 設(shè)計(jì)模式概覽
- 創(chuàng)建型模式(Creational Pattern)
- 結(jié)構(gòu)型模式(Structural Pattern)
- 行為型模式(Behavioral Pattern)
為什么要寫設(shè)計(jì)模式系列
設(shè)計(jì)模式這玩意平日里讓我思緒萬千,可真要提起筆來卻顧頭顧尾、不得要義。于是乎就有了書寫設(shè)計(jì)模式系列的想法,一來是徹頭徹尾的歸納總結(jié)一遍,二來也希望盡自己力量生產(chǎn)一些“不那么糟糕”的產(chǎn)物。
整篇文集收錄將會(huì)逐步增加,直至經(jīng)典的23種設(shè)計(jì)模式全部完成。并且在23種模式徹底定稿前,我會(huì)定期的回顧之前書寫的內(nèi)容,力求做到寫出的東西不給別人帶來困擾。也非常歡迎您通過評論、私信等方式為文章勘誤。
學(xué)設(shè)計(jì)模式之前,先學(xué) UML
學(xué)設(shè)計(jì)模式之前,需先學(xué)習(xí)UML 中的類圖。 能看懂類圖中各個(gè)類之間的線條、箭頭代表什么意思,也就足夠應(yīng)對日常的工作和交流。這時(shí)我們就能將類圖所表達(dá)的含義和最終的代碼對應(yīng)起來。 UML 知識(shí)將是我們學(xué)習(xí)設(shè)計(jì)模式的基礎(chǔ)設(shè)施。
可以參考我整理的UML類圖文章,或者直接 Google 。
設(shè)計(jì)模式概覽
創(chuàng)建型模式(Creational Pattern)
創(chuàng)建型模式對類的實(shí)例化過程進(jìn)行了抽象,能夠?qū)④浖K中
對象的創(chuàng)建和對象的使用分離。為了使軟件的結(jié)構(gòu)更加清晰,外界對于這些對象只需要知道它們共同的接口,而不清楚其具體的實(shí)現(xiàn)細(xì)節(jié),使整個(gè)系統(tǒng)的設(shè)計(jì)更加符合單一職責(zé)原則。
| 名稱CN. | 名稱EN. | 模式本質(zhì) | 重要程度 | 文章鏈接 |
|---|---|---|---|---|
| 簡單工廠模式 | Simple Factory | 選擇實(shí)現(xiàn) | ???????? | 前往查看 |
| 工廠方法模式 | Factory Method | 延遲到子類來選擇實(shí)現(xiàn) | ?????????? | 前往查看 |
| 抽象工廠模式 | Abstract Factory | 選擇產(chǎn)品簇 | ?????????? | 前往查看 |
| 建造者模式 | Builder | 部件構(gòu)造 | ???? | 前往查看 |
| 單例模式 | Singleton | 控制實(shí)例數(shù)目 | ???????? | 等待完善 |
| 原型模式 | Prototype | 克隆生成對象 | ?????? | 前往查看 |
結(jié)構(gòu)型模式(Structural Pattern)
結(jié)構(gòu)型模式描述
如何將類或者對象結(jié)合在一起形成更大的結(jié)構(gòu)。就像搭積木,可以通過簡單積木的組合形成復(fù)雜的、功能更為強(qiáng)大的結(jié)構(gòu)。
結(jié)構(gòu)型模式可以分為:
- 類結(jié)構(gòu)型模式 —— 在類結(jié)構(gòu)型模式中一般只存在繼承關(guān)系和實(shí)現(xiàn)關(guān)系。
- 對象結(jié)構(gòu)型模式 —— 對象結(jié)構(gòu)型模式關(guān)心類與對象的組合,通過關(guān)聯(lián)關(guān)系使得在一 個(gè)類中定義另一個(gè)類的實(shí)例對象,然后通過該對象調(diào)用其方法。
| 名稱CN. | 名稱EN. | 模式本質(zhì) | 重要程度 | 文章鏈接 |
|---|---|---|---|---|
| 適配器模式 | Adapter | 轉(zhuǎn)化匹配,復(fù)用功能 | ???????? | 前往查看 |
| 裝飾模式 | Decorate | 動(dòng)態(tài)組合 | ?????? | 前往查看 |
| 橋接模式 | Bridge | 分離抽象與實(shí)現(xiàn) | ?????? | 等待完善 |
| 外觀模式 | Facade | 封裝交互,簡化調(diào)用 | ?????????? | 前往查看 |
| 享元模式 | Flyweight | 分離與共享細(xì)粒度對象 | ?? | 前往查看 |
| 組合模式 | Composite | 葉子與組合對象 | ???????? | 前往查看 |
| 代理模式 | Proxy | 控制對象訪問 | ???????? | 前往查看 |
行為型模式(Behavioral Pattern)
行為型模式是
對在不同的對象之間劃分責(zé)任和算法的抽象化。行為型模式不僅僅關(guān)注類和對象的結(jié)構(gòu),而且重點(diǎn)關(guān)注它們之間的相互作用。
行為型模式分為類行為型模式和對象行為型模式兩種:
- 類行為型模式:類的行為型模式使用繼承關(guān)系在幾個(gè)類之間分配行為,類行為型模式主要通過多態(tài)等方式來分配父類與子類的職責(zé)。
- 對象行為型模式:對象的行為型模式則使用對象的聚合關(guān)聯(lián)關(guān)系來分配行為,對象行為型模式主要是通過對象關(guān)聯(lián)等方式來分配兩個(gè)或多個(gè)類的職責(zé)。
| 名稱CN. | 名稱EN. | 模式本質(zhì) | 重要程度 | 文章鏈接 |
|---|---|---|---|---|
| 命令模式 | Command | 封裝命令 | ???????? | 前往查看 |
| 狀態(tài)模式 | State | 分離狀態(tài),選擇實(shí)現(xiàn) | ?????? | 前往查看 |
| 策略模式 | Strategy | 分離算法,選擇實(shí)現(xiàn) | ???????? | 前往查看 |
| 中介模式 | Mediator | 封裝交互 | ???? | 等待完善 |
| 觀察者模式 | Observer | 觸發(fā)聯(lián)動(dòng) | ?????????? | 前往查看 |
| 職責(zé)鏈模式 | Chain of Responsibility | 分離職責(zé),動(dòng)態(tài)組合 | ?????? | 前往查看 |
| 迭代器模式 | Iterator | 控制訪問聚合對象中的元素 | ?????????? | 前往查看 |
| 備忘錄模式 | Memento | 保存和恢復(fù)內(nèi)部狀態(tài) | ???? | 等待完善 |
| 解釋器模式 | Interpreter | 分離實(shí)現(xiàn),解釋執(zhí)行 | ?? | 等待完善 |
| 訪問者模式 | Visitor | 預(yù)留通路,回調(diào)實(shí)現(xiàn) | ?? | 等待完善 |
| 模板方法模式 | Template Method | 固定算法骨架 | ?????? | 等待完善 |