背景介紹
之前在閱讀《JavaScript設計模式和開發實踐》這本書的時候,收貨頗豐,學習了設計模式在很多場景下的應用。
但也是因為書上場景過多,所以當記不清某一種設計模式的時候,翻書溫習複雜案例的成本是相對較高的。有時候,只需要一段經典、簡潔的demo就可以迅速回顧起精髓,在快速業務開發中,這是個比較經濟的做法。
除此之外,當主要工作語言發生變化的時候(例如:js -> python),簡潔的demo更能幫助開發者快速回憶某種設計模式的精髓和實現思路,方便開發者根據語言特性再做實現。
因此,對於比較重要的18種設計模式,我都挑選了它的一種經典應用,並且儘量使用ES6
的語法和程式設計習慣來進行實現。 前10個設計模式還提供了Python3
的實現版本(後來比較忙,遂放棄)。
文章地址
一共記錄了18個設計模式,部分文章發到了掘金,由於精力有限,後面幾篇文章就直接放在了Github倉庫 / 個人部落格
- 單例模式:godbmw.com/passages/20…
- 策略模式: godbmw.com/passages/20…
- 代理模式: godbmw.com/passages/20…
- 迭代器模式: godbmw.com/passages/20…
- 訂閱-釋出模式: godbmw.com/passages/20…
- 命令模式: godbmw.com/passages/20…
- 組合模式: godbmw.com/passages/20…
- 享元模式:godbmw.com/passages/20…
- 責任鏈模式: godbmw.com/passages/20…
- 裝飾者模式: godbmw.com/passages/20…
- 狀態模式: godbmw.com/passages/20…
- 介面卡模式: godbmw.com/passages/20…
- 橋接模式: godbmw.com/passages/20…
- 直譯器模式: godbmw.com/passages/20…
- 備忘錄模式: godbmw.com/passages/20…
- 模板模式: godbmw.com/passages/20…
- 工廠模式: godbmw.com/passages/20…
- 抽象工廠模式: godbmw.com/passages/20…
放在最後
其實整理這些的原因還有一個,就是為了準備今年春招的面試。然後過了騰訊的校招和阿里的前三面發現,竟然沒有專門問到設計模式相關知識!
但回首看,系統地學習、理智地使用設計模式(不是為了用而用),確實能提升程式碼的可讀性,實現業務解耦。而在寫這些文章的過程中,每種設計模式自己也是會找很多的實現(包括不限於python、java、c++)來參考,探索式學習還是蠻有趣的。
儘管如此,有2篇文章的瑕疵還是很多,希望您抱著交流的心態來閱讀,如有不當,歡迎指出、共同提升。