更多文章参见: https://github.com/elevenbeans/elevenbeans.github.io

前言

本系列可以看作是我个人对于 Addy Osmani 的著作《Learning JavaScript Design Patterns》中内容的提炼,类似阅读笔记,目的是为了简单快速、又不失全面地了解设计模式的相关概念、特点、分类及其在 Javascript 中的实际用法。

预计会分为五篇:

  1. 概述(本篇)
  2. 创建型
  3. 结构型
  4. 行为型
  5. MV*

基本概念

设计模式是一种可用于解决软件设计中问题的可复用的解决方案。

主要特点

  • 是在没有显而易见的方案(语言本身的 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, 谢谢 :)