更多文章參見: github.com/elevenbeans…javascript
前言
本系列能夠看做是我我的對於 Addy Osmani 的著做《Learning JavaScript Design Patterns》中內容的提煉,相似閱讀筆記,目的是爲了簡單快速、又不失全面地瞭解設計模式的相關概念、特色、分類及其在 Javascript 中的實際用法。java
分爲五篇,基本上涵蓋了絕大部分設計模式類型。若是想深刻了解,推薦原著。git
- 概述(本篇)
- 建立型
- 結構型
- 行爲型設計模式
- MV*
基本概念
設計模式是一種可用於解決軟件設計中問題的可複用的解決方案。github
主要特色
- 是在沒有顯而易見的方案(語言自己的 feature 或其運行環境提供的 API)下的一種間接解決問題的方案
- 能解決實際問題,可複用
- 是通過多方驗證的,描述與實際做用一致的
- 能夠抽象爲一種關係的描述,富有表達力
一些經典的設計模式類別
1. 建立型設計模式
- Constructor(構造器) 模式
- Factory(工廠) 模式
- Abstract(抽象) 模式
- Prototype(原型) 模式
- Singleton(單例) 模式
- Builder(生成器) 模式
2. 結構型設計模式
- Decorator(裝飾者) 模式
- Facade(外觀) 模式
- Flyweight(享元) 模式
- Adapter(適配器) 模式
- Proxy(代理) 模式
3. 行爲設計模式
- Iterator(迭代器) 模式
- Mediator(中介着) 模式
- Observer(觀察者) 模式
- Visitor(訪問者) 模式
JavaScript 中一些反模式的例子
- 大量的全局變量,對於全局命名空間的污染
- 對於
setTimeout()``setInterval()
傳遞字符串,引起eval()
的使用
- 修改原生 Object 對象的原型
- Inline JavaScript
- 濫用
document.write
持續關注請 Star and Watch This github repo, 謝謝 :)設計模式