首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JS设计模式 - 笔记

设计模式概略 + 常用设计模式 包括单例模式、策略模式、代理模式、发布订阅模式、命令模式、组合模式、装饰器模式、适配器模式 # 设计模式概略 ---- # 什么是设计模式 定义:在软件设计过程中...,针对特定问题简洁而优雅解决方案 # SOLID 五大设计原则 Single:单一职责原则 一个程序只做好一件事 Open:开放封闭原则 对扩展开放,对修改封闭 Liskov:里氏置换原则 子类能覆盖父类...,并能出现在父类出现地方 Interface:接口独立原则 保持接口单一独立 Dependency:依赖导致原则 使用方法只关注接口而不关注具体类实现 # 为什么需要设计模式 易读性 使用设计模式能够提升代码可读性...,提升后续开发效率 可扩展性 使用设计模式对代码解耦,能很好地增强代码易修改性和扩展性 复用性 使用设计模式可以重用已有的解决方案,无需再重复相同工作 可靠性 使用设计模式能够增加系统健壮性,...使代码编写真正工程化 # 常见设计模式 ---- # 单例模式 定义:唯一 & 全局访问。

85130
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JS设计模式之代理模式

    https://blog.csdn.net/j_bleach/article/details/71374535 什么是代理模式 代理模式,类似于明星经纪人,想要拜访明星...而在JS当中,如果想访问一个类,需要通过另一个类来间接访问 。不同于装饰器,那种动态加载一个对象,可以说在代理模式当中,代理是早已既定。 别人眼中代理 ?...而后者在代码上还多了一些,但为什么这里还是推荐使用后面这种模式来写代码呢? 使用代理模式好处 首先介绍一个面向对象设计原则,单一职责原则。 又称单一功能原则,面向对象五个基本原则(SOLID)之一。...软件设计本身所追求目标就是封装变化、降低耦合,而开放封闭原则正是对这一目标的最直接体现。...其他设计原则,很多时候是为实现这一目标服务,例如以Liskov替换原则实现最佳、正确继承层次,就能保证不会违反开放封闭原则。

    77041

    设计模式之命令模式-JS

    命令模式用途 命令模式是最简单和优雅模式之一,命令模式命令(command)指的是一个执行某些特定事情指令。   ...此时希望用一种松耦合方式来设计程序,使得请求发送者和请求接收者能够消除彼此之间耦合关系。  ...回想一下命令模式应用场景:    有时候需要向某些对象发送请求,但是并不知道请求接收者是谁,也不知道被请求操作是什么,此时希望用一种松耦合方式来设计软件,使得请求发送者和请求接收者能够消除彼此之间耦合关系...此时我们需要借助命令对象帮助,以便解开按钮和负责具体行为对象之间耦合。    设计模式主题总是把不变事物和变化事物分离开来,命令模式也不例外。...命令模式由来,其实是回调(callback)函数一个面向对象替代品   在面向对象设计中,命令模式接收者被当成command对象属性保存起来,同时约定执行命令操作调用command.execute

    1.1K20

    JS设计模式之工厂模式

    ——《设计模式:可复用面向对象软件基础》中文版第81页 在我理解中,所谓工厂方法,是指我们通过调用已知接口,获得未知对象,做出预期行为。工厂方法为我们提供这一对象。...——《设计模式:可复用面向对象软件基础》 说人话,就是工厂方法只有一个方法,抽象工厂有多个方法。...许多文章喜欢以不同操作系统匹配不同外观举例,但是我们既然都用上了跑在浏览器里JS,那就尽可能不考虑跨平台问题。 所以我想到了移动端和桌面端UI不同,这或许是一个应用抽象工厂模式良好切入点。...如果按照《设计模式:可复用面向对象软件基础》中定义来说,它是不正确。但我们不探讨者是否正确,我们也来实现一个可拓展工厂。...参考 设计模式:可复用面向对象软件基础 Learning JavaScript Design Patterns -- The Factory Pattern

    99520

    JS常用几种设计模式

    好记性不如烂笔头,又重新回顾了一遍设计模式,虽然仅仅掌握了几种熟悉设计模式,但是希望在复杂业务上,能想起那些不太常用设计模式。 正文开始......【发布订阅模式】 是一种行为模式主要用于不同对象之间交互信息 发布对象:重要事情发生时,会通知订阅者 订阅对象:监听发布对象通知,并做出相应反应 观察者主要分为两类:推送模式和拉动模式 推送模式是由发布者负责将消息发送给订阅者...》中也有很多其他模式,比如代理模式,中介者模式,状态模式等,很多设计模式实际上在业务代码里并不会用到,在某些特殊业务场景这些设计模式思想会大大增强我们代码拓展性,但过度设计模式也会带来一定阅读负担...总结 常用设计模式,比如说单例模式,单例就是只对外暴露一个实例,所有的内部方法都是通过这个实例访问 策略者模式是一种多条件优化模式,当你在条件判断很多时,可以考虑策略者模式 工厂模式主要通过一个中间函数...,通过形参输出对应对象 装饰器模式主要是扩展对象多个功能能力 观察者模式也是发布订阅模式主要有发布对象与订阅对象,订阅者监听发布对象通知,做出响应,发布对象是有重要通知,统一通知所有订阅者 另外看到一个利用闭包实现一个函数

    77320

    JS设计模式之原型模式

    意图 用原型示例指定创建对象种类,并且通过拷贝这些原型创建新对象。 ——《设计模式:可复用面向对象软件基础》中文版第89页 所以这里说原型类似于对象蓝图。...但是,由于JS灵活性,这个设计模式对于JS来说不是很重要。 因为在像C++这样静态语言中,类不是对象,并且运行时只能得到很少或者得不到任何类型信息,所以Prototype(原型模式)特别有用。...——《设计模式:可复用面向对象软件基础》中文版第92页 所以这里只做一个学习,我们只需要知道这个设计模式对于JS来说不是很重要即可。...draw(factory1) // Drawing a reactangle, size: 3x5 draw(factory2) // Drawing a circle, radius: 5 在JS...注意到,这里也使用了工厂模式:这个工厂以传入对象为原型创建新对象。 参考 设计模式:可复用面向对象软件基础

    44820

    JS设计模式之单例模式

    ——《设计模式:可复用面向对象软件基础》中文版第96页 这个概念有些类似于全局变量,它确保所有引用都访问到唯一实例对象,这可以节省掉创建对象开销。...但是,相应地,在懒加载模式下,它也带来了检查是否已经创建对象开销。所以还是要根据情况灵活选择使用与否。 示例 有两种实现方法,下面都列出。或许还有更多,这里就不深究了。...更改构造函数返回值 在JS中,构造函数是可以有返回值:当返回一个对象时,它就会被作为new操作结果;当返回一个基本类型(number,string等)时,这个返回值是无效。...指向Singleton这个类,因为JS本质还是一个对象,而我们通过Singleton.getInstance()这种方式调用,就相当于把this与Singleton绑定。...参考 设计模式:可复用面向对象软件基础 Learning JavaScript Design Patterns -- The Singleton Pattern

    1.4K30

    JS设计模式之建造者模式

    意图 将一个复杂对象构建与它表示(即实例对象)分离,使得同样构建过程可以创建不同表示 ——《设计模式:可复用面向对象软件基础》中文版第74页 这句话里包含着两个要素:第一个是分离构建与表示...,也就是说我们要单独创建一个新类XxxBuilder来进行构建操作;第二个是这个XxxBuilder可以被继承然后重写方法,使得调用同样接口却创建了不同对象。...来得到不同结果了。...此外,还有一种JS中特有的方式,如下: function ajax({ method, url, success }) { const xhr = new XMLHttpRequest()...参考 设计模式:可复用面向对象软件基础 Using the Builder Pattern in JavaScript (With Examples)

    47720

    JS设计模式之单例模式

    设计模式前言 起源 首先要说明设计模式期初并非软件工程中概念,而是起源于建筑领域。...微软杰出工程师(艾瑞克·伽玛)受到克里斯托夫·亚历山大和他模式语言》启发,把这种模式概念移植到了软件开发中,并且针对C++提出了23种设计模式,写成了《设计模式:可复用面向对象软件基础》一书。...解释:给解决方案取个好听名字 作用 一定会增加代码量 一定会增加复杂度 有可能提升可维护性 有可能降低沟通成本 JS设计模式 并不是所有的设计模式都适用于任何开发语言,每种语言因为本身设计初衷就不相同...,有些设计模式在C语言里非常适用,但是在JS里有更简单解决方案,在这种情况下就没有必要一定按照设计模式描述通过强制模拟方式来实现。...比如我们常说JS中函数是一等公民,可以当做对象来使用,也可以当做参数来传递,还可以当成类来使用,而这些特性在很多静态类型语言中需要用特定方式来实现,因此在JS中很多模式是解释器本身就实现,不需要做额外工作

    2K31

    JS设计模式之职责链模式

    源码 点击这里前往Github获取本文源码,其中normal是常规方法,promise是借助Promise方法。 意图 使多个对象都有机会处理请求,从而避免请求发送者和接收者之间耦合关系。...——《设计模式:可复用面向对象软件基础》中文版第167页 尤其是我们在处理不同类型表单时,这个设计模式就能很好派上用场。...示例 假设我们给一个商场写逻辑,需求是: 已经支付了500元定金用户享7折优惠。 已经支付了100元定金用户享9折优惠。 未支付定金普通用户不享受优惠。...除外,如果说库存不够,用户也是买不到,考虑实现方法。...参考 设计模式:可复用面向对象软件基础 JavaScript 设计模式之职责链模式 JS职责链模式(责任链模式

    49410

    浅析 JS 设计模式之:工厂模式

    今天来说一说一种常见设计模式:工厂模式。 工厂模式是一种创建对象 创建型模式,遵循 DRY(Don’t Repeat Yourself)原则。...在该模式下,代码将会根据具体输入或其他既定规则,自行决定创建哪种类型对象。简单点儿说就是,动态返回需要实例对象。...为了把 logger 模块使用方式统一,这时候就会用到工厂模式啦~ 让我们新建一个 index.js: // logger/index.js import ConsoleLogger from '....而外面的使用方式都是不变,这样就用最少修改完成了功能新增,是不是很棒呀~ 总结 下面我们来回顾一下工厂模式优点: 动态创建对象:可以用于需要在 运行时 确定对象类型情况。...工厂模式就介绍到这里啦~ 下次我们讲一讲装饰器模式~ 参考内容 JavaScript Object Oriented Patterns: Factory Pattern 《JavaScript 设计模式

    83930

    JS常用设计模式解析

    我想作为一个前端开发者,前期大多数只会关注代码功能性。但是随着编程经验增加,维护更大更复杂代码模块,需要就不仅仅只是代码功能性实现,还需要关注代码复用性,扩展性和可维护性。...这个时候就需要用到设计模式。 在《JavaScript设计模式》一书中,将设计模式分为了三大类,分别是创建型设计模式,结构型设计模式以及行为型设计模式,每一类包含若干共性设计模式。...这本书目前还没有拜读,列在我下一份书单中。这一系列文章中我也不打算涉及所有的设计模式,而是对常用设计模式做一个分析总结。分析过程是从场景需求引出该模式优点和功能。...JS常用设计模式解析01-单例模式 JS常用设计模式解析02-策略模式

    1.3K30

    设计模式】学习JS设计模式?先掌握面向对象!

    ---- 设计模式 今天开始初学设计模式,在此记录以便日后复习。...什么是设计模式 一个模式就是一个可重用方案,可应用于在软件设计常见问题,另一种解释就是一个我们如何解决问题模板 - 那些可以在许多不同情况里使用模板。...--w3cschool 我为什么要学习设计模式 高级工程师面试必考知识点 写出更好代码,设计模式是必经之路 掌握设计模式更容易阅读流行框架源码 想要成为项目负责人,从零架构工程,设计模式是基石 没事装个逼.........我学习设计模式四个阶段 巩固面向对象相关知识,es6 class语法,封装,继承,多态等 掌握设计原则 掌握设计模式 最后做一个练习案例面向对象 学习设计模式,面向对象是基础,那就先来复习一下面向对象和函数式编程区别...,感觉写不错请关注一下专栏 适合前端人员设计模式

    44640

    vue设计模式总结-vue中主要用到了那些设计模式-面试篇

    Vue 中主要用到设计模式包括: 一.观察者模式(Observer Pattern): Vue 使用观察者模式来实现数据响应式,当数据发生变化时,相关视图会自动更新。...,并执行相应操作,这也是观察者模式应用。...5.策略模式(Strategy Pattern): Vue 指令系统和插件系统可以看作是策略模式应用,通过不同指令和插件来实现不同功能扩展。...依赖注入模式(Dependency Injection Pattern): Vue 依赖注入主要体现在组件之间数据传递和通信上,通过 props 属性传递数据或使用 provide/inject 实现跨层级组件数据传递...这就是依赖注入模式在Vue中应用。 综上,这些设计模式使得 Vue 在开发中更加灵活和可维护,同时提供了丰富功能和扩展性。

    51210

    JS设计模式之基于组合模式code review

    ,功能大体是完成一个jstree增删改等功能,但在看代码过程中,感觉代码结构比较混乱,为此在基于组合模式设计理念上对代码进行一次整理。...组合模式JS当中,组合模式可以简单理解为由对象组成树形结构,如图: ? A为树跟节点,B为A子节点,同时B又是DE父节点。...但是在组合模式中,AB并不是父子关系,而是用相同接口对象,来进行统一操作,是一种HAS-A(聚合)关系,而不是IS-A。...而在组合模式当中,因为在这棵树中每一个节点都会执行相同操作,而每一个节点看作是一个对象,那么就可以认为是一组具有相同属性方法对象集合。...总结 组合模式让代码结构更加清晰,更加方便于后来的人去阅读,维护。这种模式只是结构上改观,并没有能让代码性能提高。

    65550

    JS 设计模式之工厂模式(创建型)

    如果在使用构造器模式时候,我们本质上是去抽象了每个对象实例变与不变。那么使用工厂模式时,我们要做就是去抽象不同构造函数(类)之间变与不变。...2、简单工厂模式 这里用个例子来介绍一下简单工厂模式: 老板还想要这个系统具备给不同工种分配职责说明功能。...现在我们一起来总结一下什么是工厂模式: 工厂模式其实就是将创建对象过程单独封装。...在工厂模式里,我传参这个过程就是点菜,工厂函数里面运转逻辑就相当于炒菜厨师和上桌服务员做掉那部分工作——这部分工作我们同样不用关心,我们只要能拿到工厂交付给我们实例结果就行了。...3、小结 工厂模式简单之处,在于它概念相对好理解:将创建对象过程单独封装,这样操作就是工厂模式

    58820
    领券