設計模式完結匯總,堅持寫完了!
第一篇設計模式2019年10月開始,到現在差不多半年的時間了,最後我終於堅持寫完了。
不管寫的質量是好是壞【堅持】這件事確實是很困難的。最初的想法是通過寫部落格來督促自己,讓自己把這個學習的過程記錄下來,之前都只逛園子,很多東西記錄到雲筆記。但是雲筆記和部落格相比缺少一樣東西,那就是分享,當別人發現有不對的地方可以指正,帶來的點贊啊評論啊會進行正向激勵,這樣下次學習寫東西的時候更有動力(不要說是最大的動力,最大的動力應該是源於自身的充實)。通過這樣的正向反饋對自己的學習熱情和學習態度都有很大的幫助,當沒人反饋的時候也要堅持,因為我們要明白最大的收穫是我們自己。
不過寫部落格確實費時間,一篇文章得花個2-5小時不等(對於我而言)。首先自己得先領會看懂才能寫出來讓別人看懂,其次自己得畫圖、寫程式碼、測試等等,最後通篇寫完得注意前後敘述邏輯排版順序以及專業用詞的準確性。當然這個是循序漸進的,我也是初次嘗試,很多東西有待提高,學習知識嘛不寒磣。並且通過寫的方式,首先學習一遍,寫的過程再分析一遍,最後自己閱讀調整,這樣下來不僅加強了知識的記憶並且對細節的理解也更深刻。至於哪裡深刻,這個東西只能自己體會了,很玄學。就像我在學習設計模式的過程中對於之前有些不太理解的設計仿若醍醐灌頂,因為之前接觸過的系統可能到最後都沒擴充套件過,所以有些模式並沒有發揮它的價值,但是至少我知道了這個地方原來這樣設計是為了擴充套件為了有一個更好的設計。
之前的文章開始寫沒有經驗,應該給一個目錄方便閱讀或者把demo程式碼地址放出來。後面寫了幾篇才發現,最後想難得改,也不破壞最初的樣子就一直寫完了。所以在這裡對模式進行一個總結吧分類,同時也相當於一個目錄,方便查詢對應文章。
設計模式書:
設計模式基礎
- 抽象
- 封裝
- 多型
- 繼承
設計模式原則
設計原則名稱 |
設計原則簡介 |
遵循原則的設計模式 |
單一職責原則 (Single Responsibility Principle, SRP) |
類的職責要單一,不能將太多的職責放在一個類中 |
Head First設計模式——介面卡模式 Head First設計模式——組合模式 |
開閉原則 (Open-Closed Principle, OCP) |
軟體實體對擴充套件是開放的,但對修改是關閉的,即在不修改一個軟體實體的基礎上去擴充套件其功能 |
Head First設計模式——觀察者模式 |
里氏代換原則 (Liskov Substitution Principle, LSP) |
在軟體系統中,一個可以接受基類物件的地方必然可以接受一個子類物件 |
基本原則 |
依賴倒轉原則 (Dependency Inversion Principle, DIP) |
要針對抽象層程式設計,而不要針對具體類程式設計 |
Head First設計模式——策略模式 Head First設計模式——裝飾者模式 |
介面隔離原則 (Interface Segregation Principle, ISP) |
使用多個專門的介面來取代一個統一的介面 |
基本原則 |
合成複用原則 (Composite Reuse Principle, CRP) |
在系統中應該儘量多使用組合和聚合關聯關係,儘量少使用甚 至不使用繼承關係 |
Head First設計模式——策略模式 |
迪米特法則 (Law of Demeter, LoD) |
一個軟體實體對其他實體的引用越少越好,或者說如果兩個類不必彼此直接通訊, 那麼這兩個類就不應當發生直接的相互作用,而是通過引入一個第三者發生間接互動 |
Head First設計模式——外觀模式 |
設計模式分類(分類的目的是幫助我們記憶,通過比較不同分類讓我們對模式有清晰的概念)
- 建立型(建立模式涉及到將物件例項化,這類模式提供一個方法,將客戶從所需要例項化的物件解耦)
單例模式(Singleton)
生成器模式(Builder)
原型模式(Prototype)
抽象工廠模式(Abstract Factory)
工廠方法模式(Factory Method)
- 行為型(只要是行為模式,都涉及到類和物件如何互動分配職責)
策略模式(Strategy)
狀態模式(State)
責任鏈模式(Chain of Responsibility)
直譯器模式(Interpreter)
命令模式(Command)
觀察者模式(Observer)
備忘錄模式(Memento)
迭代器模式(Iterator)
模板方法模式(Template Method)
訪問者模式(Visitor)
中介者模式(Mediator)
- 結構型(結構型模式可以讓你把類物件組合到更大的結構中)
裝飾者模式(Decorator)
代理模式(Proxy)
組合模式(Composite)
橋連線模式(Bridge)
介面卡模式(Adapter)
蠅量模式(Flyweight)
外觀模式(Facade)
定義設計模式
設計模式:在某情景下,針對某問題的某種解決方案
情景:應用某個模式的情況,應該是不斷出現的情況。
問題:某情景下達到的目的,也可以是某情景的約束。
解決方案:一個通用的設計,用來解決約束,達到目的。
模式示例程式碼
https://github.com/Spring2Sun/DesignPatternDemo
&n