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类来实现。

笔记

本文档中使用的所有简短定义均从此处提取。

Design-patterns-JS:用JavaScript实现23种设计模式相关推荐

  1. js实现23种设计模式(收藏)

    js实现23种设计模式 最近在学习面向对象的23种设计模式,使用java 和 javascript 实现了一遍,但是因为目前大三,还没有比较正规的大项目经验,所以学习的过程种我觉得如果没有一定的项目经 ...

  2. JavaScript 23 种设计模式之 4 抽象工厂模式

    JavaScript 23 种设计模式之 4 抽象工厂模式 概念与特点 结构与实现 应用场景 应用实例 总结 概念与特点 概念: 提供一组相关或相互依赖对象的接口.抽象工厂模式是工厂方法模式的升级版, ...

  3. javascript的几种设计模式

    <Practical Common Lisp>的作者 Peter Seibel 曾说,如果你需要一种模式,那一定是哪里出了问题.他所说的问题是指因为语言的天生缺陷,不得不去寻求和总结一种通 ...

  4. 23种设计模式全解析

    longyulu的专栏 目录视图 摘要视图 订阅 [公告]博客系统优化升级     [收藏]Html5 精品资源汇集    博乐招募开始啦    id="cpro_u2392861_ifra ...

  5. 23种设计模式介绍以及在Java中的实现

    本文章出自:blog.csdn.net/anxpp/artic- 若要查看原文请点击 文章中的示例源码在github上:github.com/anxpp/JavaD- 由于CSDN上的下拉翻页比较麻烦 ...

  6. Java开发中的23种设计模式详解(转)

    设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  7. 【java】java开发中的23种设计模式详解

    设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  8. java 23种设计模式(转载)

    设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  9. java GoF 的 23 种设计模式的分类和功能

    摘抄:http://c.biancheng.net/view/1320.html 1.什么是GoF(摘抄自百度词条) <Design Patterns: Elements of Reusable ...

最新文章

  1. 字符串最易犯的错误 总是和 那个\0 有关
  2. 如何用 Python 将 Excel 表格转成可视化图形?| 原力计划
  3. 获取手机上的相关参数方法
  4. 201521123111《Java程序设计》第2周学习总结
  5. Laravel 文件夹结构简介
  6. Windows7跑星际争霸问题解决——为了继续星际争霸的辉煌!
  7. 智能检测营销是否合规,网易易盾发布广告合规检测解决方案
  8. PyTorch Tutorial
  9. css在盒子中垂直居中和固定居中
  10. html中高与行高的区别,CSS中line-height与height有什么区别
  11. 如何将地址栏打开的图标隐藏_如何制作一款手机主题?这套UI主题图标教程将为你解密!...
  12. 基于JAVA+SSH+MYSQL的在线考试系统
  13. 前后落差大用什么词语_在海边拍婚纱照,需要准备什么东西呢?海景婚纱摄影这些要注意...
  14. 正向代理 smtp imap_Nginx代理模式及区别
  15. 小白学电脑计算机的组成,新手学电脑步骤,从零开始学电脑
  16. Jenkins下载安装及配置
  17. iphone显示不了wifi已连接服务器,苹果手机显示已经连接wifi但是不能上网如何解决...
  18. 大数据实战之Spark-Flume-Kafka-idea-Mysql实时处理数据并存储
  19. 【c++】c++中顶层const与底层const
  20. BlackArch安装(译文)

热门文章

  1. asp.net页面回传与js调用服务端事件,Postback的原理
  2. 使用 jQuery Mobile 与 HTML5 开发 Web App (十五) —— jQuery Mobile 与响应式
  3. Linux: sysv-rc-conf管理Ubuntu server开机启动服务
  4. PHP判断字符串是纯英文、纯汉字或汉英混合
  5. 动态创建php 类函数或函数
  6. 正则表达式 去除连续空白 + 获取url +分割url + 获取图片
  7. iptables二之防火墙SNAT源地址转换,MASQUERADE地址伪装之DNAT目标地址转换讲解和实验演示
  8. 【图说Word】怎么在word的每一行前面和后面加上同一个字或字符?
  9. oracle清空回收站
  10. 【今日CV 计算机视觉论文速览 第116期】Mon, 13 May 2019