Design-patterns-JS:用JavaScript实现23种设计模式
github:https://github.com/fbeline/design-patterns-JS
gitee: https://gitee.com/yunwisdoms/design-patterns-JS
翻译来至:https://gitee.com/yunwisdoms/design-patterns-JS/blob/master/README.md
设计模式JS
- 在这里,您将找到使用原型和ES6类在JavaScript中实现的23种(GoF)设计模式。您可以使用docs.md快速概述示例。
遵循按类型分隔的模式列表:
创建模式
创建模式是为您创建对象的模式,而不是让您直接实例化对象的模式。这使您的程序在决定需要为给定情况创建哪些对象时具有更大的灵活性。
- 抽象工厂:提供一个用于创建相关或依赖对象族的接口,而无需指定其具体类。
- 构建器:将复杂对象的构造与其表示分开,从而允许相同的构造过程创建各种表示。
- 工厂方法:定义用于创建单个对象的接口,但让子类决定实例化哪个类。Factory Method使类将实例化延迟到子类。
- 原型:指定要使用原型实例创建的对象的种类,并从现有对象的“骨架”创建新对象,从而提高性能并将内存占用量降至最低。
- 单例:确保一个类只有一个实例,并提供对其的全局访问点。
结构模式
这些涉及类和对象组成。他们使用继承来构成接口并定义构成对象以获得新功能的方法。
- 适配器:通过将自己的接口包装在现有类的接口上,可以使具有不兼容接口的类一起工作。
- 桥接:将抽象与其实现分离,以便两者可以独立变化。
- 复合:组成零个或多个相似的对象,以便可以将它们作为一个对象进行操作。
- 装饰器:动态添加/覆盖对象现有方法中的行为。
- Facade:为大量代码提供简化的界面。
- Flyweight:降低创建和操纵大量相似对象的成本。
- 代理:为另一个对象提供占位符,以控制访问,降低成本和降低复杂性。
行为模式
这些设计模式大多数都与对象之间的通信有关。
- 责任链:将命令委托给一系列处理对象。
- 命令:创建封装动作和参数的对象。
- 口译员:实现一种特殊的语言。
- 迭代器:顺序访问对象的元素,而不会暴露其基础表示。
- 介体:通过是唯一具有详细方法知识的类,可以允许类之间的松散耦合。
- 备忘录:提供将对象恢复到其先前状态(撤消)的功能。
- 观察者:是一种发布/订阅模式,它允许许多观察者对象查看事件。
- 状态:允许对象在其内部状态更改时更改其行为。
- 策略:允许在运行时即时选择一系列算法中的一种。
- 模板:方法将算法的框架定义为抽象类,从而允许其子类提供具体的行为。
- 访客:通过将方法的层次结构移动到一个对象中,将一种算法与一种对象结构分离。
测试
要运行测试,您只需要在项目根文件夹中执行以下命令:
npm install
npm test
- tips: 某些模式仍然需要使用ES6类来实现。
笔记
本文档中使用的所有简短定义均从此处提取。