更多文章参见: github.com/elevenbeans…
前言
本系列可以看作是我个人对于 Addy Osmani 的著作《Learning JavaScript Design Patterns》中内容的提炼,类似阅读笔记,目的是为了简单快速、又不失全面地了解设计模式的相关概念、特点、分类及其在 Javascript 中的实际用法。
分为五篇,基本上涵盖了绝大部分设计模式类型。如果想深入了解,推荐原著。
基本概念
设计模式是一种可用于解决软件设计中问题的可复用的解决方案。
主要特点
- 是在没有显而易见的方案(语言本身的 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, 谢谢 :)