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