JavaScript 设计模式解析

8/10/2021 设计模式JavaScript性能优化

什么是设计模式?

  • 设计模式是软件设计中常见问题的典型解决方案。 它们就像能根据需求进行调整的预制蓝图, 可用于解决代码中反复出现的设计问题。

  • 设计模式与方法或库的使用方式不同, 你很难直接在自己的程序中套用某个设计模式。 模式并不是一段特定的代码, 而是解决特定问题的一般性概念。 你可以根据模式来实现符合自己程序实际所需的解决方案。

  • 人们常常会混淆模式和算法, 因为两者在概念上都是已知特定问题的典型解决方案。 但算法总是明确定义达成特定目标所需的一系列步骤, 而模式则是对解决方案的更高层次描述。 同一模式在两个不同程序中的实现代码可能会不一样。

  • 算法更像是菜谱: 提供达成目标的明确步骤。 而模式更像是蓝图: 你可以看到最终的结果和模式的功能, 但需要自己确定实现步骤。


为什么要学习设计模式?

  • 设计模式来源于众多前人的经验和智慧,它们是从许多的实践和优秀的系统项目中总结提炼出来的设计方案

  • 可以提高程序员的思维能力、编程能力和设计能力。

  • 使程序设计更加标准化、代码编制更加工程化,使软件开发效率大大提高,从而缩短软件的开发周期。

  • 使设计的代码可复用性高、可读性强、可靠性高、灵活性好、可维护性强。

# 模式分类

设计模式可以有两种方法来进行分类(以下我们采用第一种划分方式进行介绍):

  1. 第一种可以根据其 目的,通过解决什么样的问题来进行划分,可分为:创建型、结构型、行为型 三种。
  2. 第二种可以根据其作用范围来进行划分,根据其作用与类上还是对象上,可分为:类模式、对象模式 两种。
  • 创建型

创建型模式提供了创建对象的机制, 能够提升已有代码的灵活性和可复用性。

  1. 工厂方法模式(Factory Method)
  2. 抽象工厂模式(Abstract Factory)
  3. 生成器模式(Builder)
  4. 原型模式(Prototype)
  5. 单例模式(Singleton)
  • 结构型

结构型模式介绍如何将对象和类组装成较大的结构, 并同时保持结构的灵活和高效。

  1. 适配器模式(Adapter)
  2. 桥接模式(Bridge)
  3. 组合模式(Composite Pattern)
  4. 装饰模式(Decorator)
  5. 外观模式(Facade)
  6. 享元模式(Flyweight)
  7. 代理模式(Proxy)
  • 行为型

行为模式负责对象间的高效沟通和职责委派。

  1. 责任链模式(Chain of Responsibility)
  2. 命令模式(Command)
  3. 迭代器模式(Iterator)
  4. 中介者模式(Mediator)
  5. 备忘录模式(Memento)
  6. 观察者模式(Observer)
  7. 状态模式(State)
  8. 策略模式(Strategy)
  9. 模板方法模式(Template Method)
  10. 访问者模式(Visitor)