設(shè)計(jì)模式開篇

目錄

  • 為什么要寫設(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 固定算法骨架 ?????? 等待完善

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 設(shè)計(jì)模式匯總 一、基礎(chǔ)知識(shí) 1. 設(shè)計(jì)模式概述 定義:設(shè)計(jì)模式(Design Pattern)是一套被反復(fù)使用、多...
    MinoyJet閱讀 4,094評論 1 15
  • 設(shè)計(jì)模式是一套被反復(fù)使用的、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。所學(xué)知識(shí)是從網(wǎng)絡(luò)上學(xué)習(xí)總結(jié)、設(shè)計(jì)到自...
    shh_閱讀 422評論 0 13
  • 震驚!小豬的設(shè)計(jì)模式初涉總結(jié)!純干貨~ 標(biāo)簽: 知識(shí)點(diǎn)總結(jié) 描述性文字 今年一月初有了離職的念頭后,就盤算著把設(shè)計(jì)...
    coder_pig閱讀 1,186評論 0 24
  • 為什么需要面相對象 在歷史進(jìn)程中,我們由面相對象編程轉(zhuǎn)向了面相對象編程,項(xiàng)目的規(guī)模也變得越來越大,其中有著必然的需...
    leaf_eater閱讀 351評論 0 0
  • 因?yàn)闄C(jī)緣巧合,今天有幸聽到了阿噶巴?洛桑大師關(guān)于《改變的力量》的講座,受益匪淺,結(jié)合我自己的理解在此做個(gè)分享...
    朱芊聿閱讀 331評論 2 1

友情鏈接更多精彩內(nèi)容