# 设计模式类别与分类

5 min read
Table of Contents

设计模式主要分成三个类别。

设计模式的分类

GoF 模式
创建型 结构型 行为型
应用范围 应用于类 Factory Method Adapter Interpreter
Template Method
应用于对象 Abstract Factory
Builder
Prototype
Singleton
Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Proxy
Chain of Responsiblity
Iterator
Mediator
Observer
State
Strategy
Visitor

创建型设计模式

创建型模式:基于创建对象的概念,创建型设计模式专注于处理对象创建机制,以合适给定情况的方式来创建对象。

创建对象的基本方法可能导致项目复杂性增加,而这些模式旨在通过控制创建过程来解决这种问题。

类
Factory Method工厂方法基于接口数据或事件生成几个派生类的一个实例
对象
Abstract Factory抽象工厂创建若干类系列的一个实例,无需详述具体的类
Builder生成器从表示中分离对象构建;总是创建相同类型的对象
Factor工厂
Prototype原型用于复制或克隆完全初始化的实例
Singleton单例一个类在全局访问点只有唯一一个实例

结构型设计模式

结构型设计模式与对象组合有关,通常可以用与找出在不同对象之间建立关系的简单方法。这种模式有助于确保在系统某一部分发生变化时,系统的整个结构不需要同时改变。

同时对于不适合因某一特定目的而改变的系统部分,这种模式也能够帮助它们完成重组。

类
Adapter适配器匹配不同类的接口,因此类可以在不兼容接口的情况下共同工作
对象
Builder桥接将对象接口从其实现中分离,因此他们可以独立进行变化
Composite组合简单和复合对象的结构,使对象的总和不只是它各部分的总和
Decorator装饰向对象动态添加备选的处理
Facade外观隐藏整个子系统复杂性的唯一一个类
Flyweight享元一个用于实现包含在别处信息的高效共享的细粒度实例
Proxy代理占位符对象代表真正的对象

行为设计模式

行为模式专注与改善或简化系统中不同对象之间的通信。

类
Iterator解释器将语言元素包含在应用程序中的方法,以匹配预期语言的语法
Template Method模板方法在方法中创建算法的 shell,然后将确切的步骤推到子类
对象
Chain of Responsiblity指责链在对象链之间传递请求的方法,以找到能够处理请求的对象
Command命令将命令执行从其调用程序中分离的方法
Iterator迭代器顺序访问一个集合中的元素,无需了解该集合的内部工作原理
Mediator中介者在类之间定义简化的通信,以防止一组类显式引用彼此
Memento备忘录捕获对象的内部状态,以能够在以后恢复它
Observer观察者向多个类同志改变的方式,以确保类之间的一致性
State状态状态改变时,更改对象的行为
Strategy策略在一个类中封装算法,将选择与实现分离
Visitor访问者向类添加一个新的操作,无需改变类

重构关键技法

  • 静态 -> 动态
  • 早绑定 -> 晚绑定
  • 继承 -> 组合
  • 编译时依赖 -> 运行时依赖
  • 紧耦合 -> 松耦合

参考链接

  • 《JavaScript 设计模式》第 7 章,第 8 章

More Posts

# 设计模式之单例模式

3 min read

单例模式(Singleton Design Pattern),一个类只允许创建一个对象(或者实例),这个类就是一个单例类,这种设计模式被叫做单例设计模式。