設計模式(一):學習大綱
該系列文章,是在學習網上課程時的學習總結,可能會有一些瑕疵和錯誤,看到的可以留言反饋,謝謝~
學習意義
重要性的看法
設計模式老生常談了,對程式設計師的後續發展是很重要的,可以有效提升程式碼的可讀性,具體來看,有如下用途:
- 應對面試,面試裡面裝高手;
- 裝杯,寫出來的程式碼別人看到了只能說牛皮;
- 複雜邏輯的結構用設計模式的思想來實現程式碼,才能實現的好;
- 原始碼、框架裡面很多設計模式思想,不懂就看不懂了;
- 一切為了職場未來更好的裝杯。
大綱
物件導向
- 四大特性:繼承、封裝、多型、抽象;
- 物件導向和麵向過程的區別和聯絡;
- 物件導向的分析、設計、程式設計;
- 介面和抽象類的區別和聯絡;
- 如何基於介面實現而不是基於實現;
- 為何要多用組合而不是繼承;
- 程式導向中的貧血模型和麵向物件的充血模型;
設計原則
- SRP 單一職責原則;
- OCP 開閉原則;
- LSP 里氏替換原則;
- ISP 介面隔離原則;
- DIP 依賴倒置原則;
- DRY 原則;
- KISS 原則;
- YAGNI 原則;
- LOD 原則
設計模式
設計模式是一系列方法論的抽象模型,大部分是用來解決程式碼的可擴充性問題,在學習這一塊的時候,重點是要知道這些設計模式是用來解決什麼問題的,在什麼場景下用,並且不過度設計。
- 建立型
- 單例模式
- 工廠模式
- 建造者模式
- 原型模式
- 結構型
- 代理模式
- 橋接模式
- 裝飾者模式
- 介面卡模式
- 門面模式
- 組合模式
- 享元模式
- 行為型
- 觀察者模式
- 模板模式
- 策略模式
- 職責鏈模式
- 迭代器模式
- 狀態模式
- 訪問者模式
- 備忘錄模式
- 命令模式
- 直譯器模式
- 中介模式
程式設計規範
目前市面上已經有很多要求規範了,所以這裡也都是一些規章要求等,照著規範來就行了。
比如,我們直接用阿里的《程式碼規範》即可,在 IDEA 裡也有其對應的外掛實現,儘量遵守即可。
程式碼重構
程式碼重構是一個持續迭代的過程,而每次採用的方法就是上面所說的那些:設計思想、設計原則、設計模式、程式設計規範等。在每次的重構過程中,靈活運用這些方法論,避免過度優化即可。
- 重構的目的、物件、時機、方法;
- 保證重構後不引入新的問題:單元測試和整合測試;
之間的聯絡
- 物件導向是下面所有方法論的基礎,其核心的4大特性,保證方法論的實現;
- 設計原則是設計模式的指導思想,許多設計模式都是實現了設計原則;
- 設計模式就是具體的實現,比設計原則更加的具體好懂;
- 程式設計規範更加註重程式碼的細節,更好落地;
- 程式設計規範是上面所有的基石,只有保證改完後不出現新的錯誤才是一次好的更改。
討論
哪一部分最重要
我認為是設計原則,因為設計模式是對設計原則的更具體實現,規範的話注重的太細節,重構每次採用的也是這些方法,所以還是原則最重要。
設計模式為什麼要強調是物件導向的設計方法論
所有的或抽象或具體都是根據物件導向的4大特性來抽象出來的。在程式導向或函數語言程式設計等程式設計模型中,並不是全部適用。
公眾號截圖
文章在公眾號「iceWang」第一手更新,有興趣的朋友可以關注公眾號,第一時間看到筆者分享的各項知識點,謝謝!筆芯!