下面是自己學習設計模式的時候做的總結,有些是自己的原創文章,有些是網上寫的比較好的文章,保存下來細細消化吧!
系列文章推薦:https://design-patterns.readthedocs.io/zh_CN/latest/index.html
創建型模式
創建型模式概述
- 創建型模式(Creational Pattern)對類的實例化過程進行了抽象,能夠將軟件模塊中對象的創建和對象的使用分離。爲了使軟件的結構更加清晰,外界對於這些對象只需要知道它們共同的接口,而不清楚其具體的實現細節,使整個系統的設計更加符合單一職責原則。
- 創建型模式在創建什麼(What),由誰創建(Who),何時創建(When)等方面都爲軟件設計者提供了儘可能大的靈活性。創建型模式隱藏了類的實例的創建細節,通過隱藏對象如何被創建和組合在一起達到使整個系統獨立的目的。
常見創建型模式詳解
- 單例模式: 深入理解單例模式——只有一個實例
- 工廠模式: 深入理解工廠模式——由對象工廠生成對象
- 建造者模式: 深入理解建造者模式 ——組裝複雜的實例
- 原型模式: 深入理解原型模式 ——通過複製生成實例
結構型模式
結構型模式概述
- 結構型模式(Structural Pattern): 描述如何將類或者對象結合在一起形成更大的結構,就像搭積木,可以通過簡單積木的組合形成複雜的、功能更爲強大的結構
- 結構型模式可以分爲類結構型模式和對象結構型模式:
- 類結構型模式關心類的組合,由多個類可以組合成一個更大的系統,在類結構型模式中一般只存在繼承關係和實現關係。
- 對象結構型模式關心類與對象的組合,通過關聯關係使得在一個類中定義另一個類的實例對象,然後通過該對象調用其方法。根據“合成複用原則”,在系統中儘量使用關聯關係來替代繼承關係,因此大部分結構型模式都是對象結構型模式。
常見結構型模式詳解
- 適配器模式:
- 橋接模式: 設計模式筆記16:橋接模式(Bridge Pattern)
- 組合模式: 大話設計模式—組合模式
- 裝飾模式: java模式—裝飾者模式、Java設計模式-裝飾者模式
- 外觀模式: java設計模式之外觀模式(門面模式)
- 享元模式: 享元模式
- 代理模式:
行爲型模式
行爲型模式概述
- 行爲型模式(Behavioral Pattern)是對在不同的對象之間劃分責任和算法的抽象化。
- 行爲型模式不僅僅關注類和對象的結構,而且重點關注它們之間的相互作用。
- 通過行爲型模式,可以更加清晰地劃分類與對象的職責,並研究系統在運行時實例對象之間的交互。在系統運行時,對象並不是孤立的,它們可以通過相互通信與協作完成某些複雜功能,一個對象在運行時也將影響到其他對象的運行。
行爲型模式分爲類行爲型模式和對象行爲型模式兩種:
- 類行爲型模式: 類的行爲型模式使用繼承關係在幾個類之間分配行爲,類行爲型模式主要通過多態等方式來分配父類與子類的職責。
- 對象行爲型模式: 對象的行爲型模式則使用對象的聚合關聯關係來分配行爲,對象行爲型模式主要是通過對象關聯等方式來分配兩個或多個類的職責。根據“合成複用原則”,系統中要儘量使用關聯關係來取代繼承關係,因此大部分行爲型設計模式都屬於對象行爲型設計模式。
- 職責鏈模式:
- Java設計模式之責任鏈模式、職責鏈模式
- 責任鏈模式實現的三種方式
- 命令模式: https://design-patterns.readthedocs.io/zh_CN/latest/behavioral_patterns/command.html 在軟件設計中,我們經常需要向某些對象發送請求,但是並不知道請求的接收者是誰,也不知道被請求的操作是哪個,我們只需在程序運行時指定具體的請求接收者即可,此時,可以使用命令模式來進行設計,使得請求發送者與請求接收者消除彼此之間的耦合,讓對象之間的調用關係更加靈活。命令模式可以對發送者和接收者完全解耦,發送者與接收者之間沒有直接引用關係,發送請求的對象只需要知道如何發送請求,而不必知道如何完成請求。這就是命令模式的模式動機。
- 解釋器模式:
- 迭代器模式:
- 中介者模式: https://design-patterns.readthedocs.io/zh_CN/latest/behavioral_patterns/mediator.html
- 備忘錄模式:
- 觀察者模式: https://design-patterns.readthedocs.io/zh_CN/latest/behavioral_patterns/observer.html、https://juejin.im/post/5c712ab56fb9a049a7127114
- 狀態模式:https://design-patterns.readthedocs.io/zh_CN/latest/behavioral_patterns/state.html
- 策略模式:https://design-patterns.readthedocs.io/zh_CN/latest/behavioral_patterns/strategy.html
策略模式作爲設計原則中開閉原則最典型的體現,也是經常使用的。下面這篇博客介紹了策略模式一般的組成部分和概念,並用了一個小demo去說明了策略模式的應用。
- 模板方法模式:
- 訪問者模式: