广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
  • 809
分享到

NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】

模式观察者适配器 2022-06-04 17:06:37 809人浏览 八月长安
摘要

本文实例讲述了nodejs设计模式。分享给大家供大家参考,具体如下: 1 . 单例模式 顾名思义,单例就是保证一个类只有一个实例,实现的方法是,先判断实例是否存在,如果存在则直接返回,若不存在,则创建实例对

本文实例讲述了nodejs设计模式。分享给大家供大家参考,具体如下:

1 . 单例模式

顾名思义,单例就是保证一个类只有一个实例,实现的方法是,先判断实例是否存在,如果存在则直接返回,若不存在,则创建实例对象,并将实例对象保存在静态变量中,当下次请求时,则可以直接返回这个对象实例,这就确保了一个类只有一个实例对象。举个例子吧~一间学校刚刚起建还没有图书馆,有的同学就向领导提意见:"hey! 哥们,能不能帮我们建一个图书馆? "(想要一个图书馆实例),然后领导说:"no problem啊!等我一下,马上建给你"(实例还没有建立,便创建一个)。几个月后,图书馆建好了~有位奇葩同学也想去图书馆,他却向领导提出要求: "hey! 哥们,我想去图书馆,能不能帮我建一个?"然后领导说: "no problem个头阿!那边已经建好了一个,你去那间不就可以了吗!"(当实例已经存在的时候,则直接返回已经创建的实例)



var _instance = null;//定义初始化_instance
module.exports = function(time){
   function Car(time){
     this.time = time;
   }
   this.getInstance = function(){
     if(_instance != null){
       return _instance;
     }else{
       return new Car(time);
     }
   }
}

2. 适配器模式

若将一个类的接口转换为客户希望的另外一个接口,适配器模式可以使原本由于接口不兼容而不能一起工作的那些类可以一起工作。举个例子吧~小明的老爸大明很爱喝白酒,但是呢喝酒又伤身,小明看到便不忍心,于是他想了方法:把白酒瓶子里面的酒倒掉,换成了白开水(重写内容)。大明看到还是那个酒瓶就没太在意(接口没有改变,只是内容改变了),一口气就把"酒"喝完了,还很高兴~(此处假设大明智商比较低..)。因此支配器是一个既不得罪他人,也能达到自己目的的一个好方法~下面是具体的实现方法



module.exports = function(){
  this.request = function(){//原接口
    console.log('Target::request');
  }
}



var util = require('util');
var Target = require('./target.js');
var Adaptee = require('./adaptee.js');
function Adapter(){
  Target.call(this);
  this.request = function(){//重写原接口
    var adapteeObj = new Adaptee();//重写的内容
    adapteeObj.specialRequest();
  }
}
util.inherits(Adapter, Target);//通过继承原模块, 获得原接口
module.exports = Adapter;

3. 装饰模式

装饰模式可以通过继承的方式,为一个基类对象扩展功能。举个例子吧~一颗圣诞树,一开始什么都没有。然后Amy看到之后往树上挂了几个饰品(扩展原来的基类),然后Billy路过之后,觉得它还差点什么,就把圣诞树拿过来(继承),然后也往上面放点其他饰品(继续扩展)。



module.exports = function(){
  this.dosomething = function(){
   console.log("Nice to meet u.");
  }
}



var util = require("util);
var Base = require('./Base');
function Decorator(){
  Base.call(this);
  this.dosomething = function(){
     Base.dosomething();
     console.log('I am a decorator');//拓展内容
  }
}
util.inherits(Decorator, Base);//继承
module.exports = Decorator;

4. 观察者模式

什么是观察者模式呢?举个例子吧~小狗同学和小熊同学同时喜欢上了班里可爱的小兔同学。小狗和小熊都会注意着小兔的一举一动,只有小兔有什么动静他们两个都会知道~相对而言呢,小狗和小熊就是小兔的"观察者",而小兔呢就是"被观察的对象"。比较重要的是:小兔发生的动静(某个函数),会同时通知到观察者小狗和小熊,让他们两个也会做出相应的反馈(各自的回调函数)



module.exports = function(){
  var m_obserSet = [];//观察者列表
  var _self = this;
  this.addObser = function(observer){
    m_obserSet.push(observer);//添加观察者
  }
  this.doAction = function(){
    console.log("Observable do some action");
    _self.notifyAllObeser();
  }
  this.notifyAllObeser = function(){//发生动作
    for(var key in m_obserSet){//逐个通知观察者
      m_obserSet[key].update();//观察者执行回调
    }
  }
}

希望本文所述对大家nodejs程序设计有所帮助。

--结束END--

本文标题: NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】

本文链接: https://www.lsjlt.com/news/12410.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
    本文实例讲述了NodeJS设计模式。分享给大家供大家参考,具体如下: 1 . 单例模式 顾名思义,单例就是保证一个类只有一个实例,实现的方法是,先判断实例是否存在,如果存在则直接返回,若不存在,则创建实例对...
    99+
    2022-06-04
    模式 观察者 适配器
  • 设计模式-观察者模式(Observer)
    讲故事(user story) 假设我们是一个优惠券提供平台,故事就发生在顾客在我们平台采购完成支付成功后。 支付完成后平台要进行的一些操作: 短信通知客户已经生成订单 增加顾客的积分 开始按订单需求制券 ​ ...
    99+
    2018-06-15
    设计模式-观察者模式(Observer)
  • PHP设计模式(观察者模式)
    PHP 设计模式之观察者模式 介绍 现在有两派,有的人建议使用设计模式,有的人不建议使用设计模式! 这就向写文章一样,有的人喜欢文章按照套路走,比如叙事性质的文章,时间,地点,人物,...
    99+
    2022-11-12
  • Java设计模式之观察者模式(Observer模式)
    目录一、观察者模式是什么?二、模式分析2.1 四个角色2.2 案例三、观察者模式的优缺点四、总结一、观察者模式是什么? 当对象间存在一对多关系时,则使用观察者模式(Observer ...
    99+
    2022-11-12
  • Java设计模式之观察者模式
    目录一、观察者模式的定义和特点二、观察者模式的结构三、代码实例代码示例总结 一、观察者模式的定义和特点 观察者模式的定义: 指多个对象间存在一对多的依赖关系,当一个对象的状态发生改...
    99+
    2022-11-12
  • JavaScript设计模式中的观察者模式
    目录观察者设计模式初始数据被观察者观察者观察者设计模式 观察者设计模式中分为被观察者和观察者,当被观察者触发了某个边界条件,观察者就会触发事件,这里需要俩个构造函数进行观察者设计模式...
    99+
    2022-11-13
  • Java设计模式中的观察者模式
    目录一.介绍二.场景约束三.UML类图四.示意代码(版本一)五.示意代码(版本二)六.观察者模式与发布订阅模式七.优点八.在JDK中的典型应用一.介绍 观察者模式(Observer ...
    99+
    2023-02-16
    Java观察者模式 Java设计模式
  • Python设计模式行为型观察者模式
    目录一、观察者模式二、应用场景三、代码示例一、观察者模式 观察者模式,必须包含 “观察者” 和 “被观察者” 这两个角色,并且观察者和...
    99+
    2022-11-13
  • PHP设计模式中观察者模式详解
    目录简介适用场景缺点补充代码(自定义实现)简介 观察者模式是行为型模式的一种,定义了对象间一对多的关系。当对象的状态发生变化时候,依赖于它的对象会得到通知。 适用场景 类似触发钩子事...
    99+
    2022-12-20
    PHP观察者模式 PHP设计模式
  • PHP设计模式之观察者模式浅析
    目录PHP观察者模式(Observer Pattern)模式结构实现步骤代码示例适用场景PHP观察者模式(Observer Pattern) 观察者模式是一种行为设计模式,它定义了一...
    99+
    2023-05-14
    PHP观察者模式 PHP 设计模式 观察者模式
  • PHP设计模式中观察者模式讲解
    目录简介适用场景优点缺点补充代码(自定义实现)代码(基于SPL实现)简介 观察者模式是行为型模式的一种,定义了对象间一对多的关系。当对象的状态发生变化时候,依赖于它的对象会得到通知。...
    99+
    2022-11-13
    PHP观察者模式 PHP设计模式
  • PHP设计模式的策略,适配器和观察者模式详解
    策略模式 特点 定义一系列算法封装起来, 让他们可以相互替代,策略模式提供了管理相关算法族的办法, 提供了可以体会继承关系的棒法, 避免使用多重条件转移语句 实现 <php a...
    99+
    2022-11-13
  • python面试题——设计模式之观察者模式
    1、观察者模式 观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 观察者模式又称:"发布-订阅"模式。 比如,微信公众号,就是一种...
    99+
    2023-09-12
    python 设计模式 观察者模式
  • Java设计模式之java观察者模式详解
    目录引言介绍角色原理类图微信订阅号的案例总结优点缺点适用场景观察者模式的典型应用JDK 提供的观察者接口Guava EventBus 中的观察者模式Spring Applicatio...
    99+
    2022-11-12
  • JavaScript设计模式之观察者模式的的示例分析
    这篇文章主要介绍JavaScript设计模式之观察者模式的的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!本文实例讲述了JavaScript设计...
    99+
    2022-10-19
  • 怎么理解Java设计模式的观察者模式
    本篇内容介绍了“怎么理解Java设计模式的观察者模式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、什么是观察者模式在许多设计中,经常涉及...
    99+
    2023-06-25
  • .Net行为型设计模式之观察者模式(Observer)
    目录一、动机(Motivate)二、意图(Intent)三、结构图四、模式的组成五、观察者模式的代码实现六、观察者模式的实现要点:1、观察者模式的优点:2、观察者模式的缺点:七、.N...
    99+
    2022-11-13
  • Java设计模式中的观察者模式怎样的
    今天就跟大家聊聊有关Java设计模式中的观察者模式怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、观察者模式的定义和特点观察者模式的定义:指多个对象间存在一对多的依赖关系,当...
    99+
    2023-06-22
  • 深入理解Java设计模式之观察者模式
    目录一、什么是观察者模式二、观察者模式的结构三、观察者模式的使用场景使用观察者模式也有两个重点问题要解决:广播链的问题。异步处理问题。四、观察者模式的优缺点五、观察者模式的实现六、观...
    99+
    2022-11-12
  • Java设计模式探究之观察者模式详解
    目录1.观察者模式是什么2.如何实现3.代码实现1)观察者接口2)被观察者接口3)观察者实现4)被观察者实现5)测试类4.延伸拓展1.观察者模式是什么 顾名思义,有两个对象,观察者和...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作