js 中单例模式、工厂模式、装饰模式、发布订阅模式、适配器模式、

这篇具有很好参考价值的文章主要介绍了js 中单例模式、工厂模式、装饰模式、发布订阅模式、适配器模式、。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

01单例模式

  单例是一个仅仅只能被实例化一次的对象,如果单例实例不存在,单例模式就会创建一个新的类实例,如果实例存在的话,则会直接返回实例对象的引用,任何重复性的执行构造函数只会返回同一个实例对象。

  简单概述:每执行一次函数,instance 记录的都是第一次执行的结果

  
  应用场景:  1、弹窗,无论点击多少次,弹窗只应该被创建一次。
            2、debounce
            3、封装一个store
  var createWindow = (function(){
        var div;
        return function(){
            if(!div) {
                div = document.createElement("div");
                div.innerHTML = "我是弹窗内容";
                div.style.display = 'none';
                document.body.appendChild(div);
            }
            return div;
        }
    })();
    document.getElementById("Id").onclick = function(){
        // 点击后先创建一个div元素
        var win = createWindow();
        win.style.display = "block";
    }


class SingleManage1 {
      constructor({ name, level }) {
          if (!SingleManage1.instance) {
              this.name = name;
              this.level = level
              SingleManage1.instance = this;
          }
          return SingleManage1.instance // 其实就是绑定在了 SingleManage1  原型上
      }
    }
    let boss1 = new SingleManage1({
        name: "Jokul",
        level: "1"
    })
    console.log(SingleManage1.prototype, '987')
    let boss2 = new SingleManage1({
        name: "Jokul2",
        level: "2"
    })
    console.log(boss1 === boss2) // true

02工厂模式

  工厂模式类似于现实的工厂生产线,可以生产出大量类似的商品。
  工厂模式的优点在于:能解决多个相似的问题,减少大量冗余代码。

  简单概述:
    应用场景:项目中提取的功用函数
function BMW(color) {
      this.name = '宝马'
      this.color = '白色'
    }
    const bmw = BMW('绿色')
    console.log(bmw, 'bmw')

03装饰模式

简单概述:将每个功能拆分到最小化,最后将小功能拼接到一起文章来源地址https://www.toymoban.com/news/detail-503442.html

  首先我们定义了一个自身对象-身上啥也没穿,此时太冷了要穿上毛衣就需要深入对象内部去修改来添加毛衣,
  下雨了想穿雨衣也需要去对象内部方法修改来增加穿上雨衣功能。
  也就是说每次功能的增加和减少都需要深入对象内部的方法去修改,
  只要深入对象内部修改就需要更多的考虑新的修改是否会对原来的代码有哪些影响。
  这样是不符合开放-封闭原则的。

  缺点:定义过多的装饰类,会增加系统的复杂性。

  优点:灵活,可扩展
 const self = {
      wear() {
        console.log('自身啥也没穿-光腚');
      },
    };

    // 穿上毛衣
    const sweater = () => {
      console.log('太冷了,赶紧穿上毛衣');
    };

    // 穿上雨衣
    const raincoat = () => {
      console.log('妈呀还下雨了,在穿上雨衣');
    };

    const wear1 = self.wear;

    self.wear = function () {
      wear1();
      sweater();
    };

    const wear2 = self.wear;
    self.wear = function () {
      wear2();
      raincoat();
    };

    self.wear();

    // 打印
    // 自身啥也没穿-光腚
    // 太冷了,赶紧穿上毛衣
    // 妈呀还下雨了,在穿上雨衣

04发布订阅模式

发布—订阅模式又叫观察者模式,它定义了对象间的一种一对多的关系,让多个观察者对象同时监听某一个主题对象,当一个对象发生改变时,所有依赖于它的对象都将得到通知。
    demo: 比如你向买房,只要把手机给房产中介,房产中介一有消息就发布消息。
   var list = {
      arr: [],
      subscribe: function(fn) {
        this.arr.push(fn);
      },
      notify: function() {
        this.arr.forEach(fn => fn());
      }
    };

    var fn1 = function() {
      console.log(1)
    }
    var fn2 = function() {
      console.log(2)
    }
    list.subscribe(fn1);
    list.subscribe(fn2);
    list.notify();


05适配器模式

适配器模式主要解决两个接口之间不匹配的问题,不会改变原有的接口,而是由一个对象对另一个对象的包装。
  demo:两个地图(2个类),他们有一个共同方法但是名字不同,这时候需要定义适配器类, 对其中的一个类进行封装。
 class GooleMap {
        show() {
            console.log('渲染谷歌地图')
        }
    }

    class BaiduMap {
        display() {
            console.log('渲染百度地图')
        }
    }

    // 定义适配器类, 对BaiduMap类进行封装
    class BaiduMapAdapter {
        show() {
            var baiduMap = new BaiduMap()
            return baiduMap.display()
        }
    }

    function render(map) {
        map.show()
    }

    render(new GooleMap())         // 渲染谷歌地图
    render(new BaiduMapAdapter())  // 渲染百度地图

到了这里,关于js 中单例模式、工厂模式、装饰模式、发布订阅模式、适配器模式、的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • c#中单例模式详解

    基础介绍:    确保一个类只有一个实例,并提供一个全局访问点。   适用于需要频繁实例化然后销毁的对象,创建对象消耗资源过多,但又经常用到的对象,频繁访问数据库或文件的对象。    其本质就是保证在 整个应用程序 的 生命周期 中, 任何一个时刻,单例类

    2024年02月06日
    浏览(37)
  • c++中单例模式的实现和问题

    单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供了一个全局访问点来访问该实例。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类

    2024年02月07日
    浏览(32)
  • js设计模式:发布订阅模式

    也称之为消息队列模式,或者pubsub模式 发布者发布消息(也可以理解为调用某函数),订阅者会收到消息,并且发布者可以将一些参数传递给订阅者。 是一种常用的参数传递方法,经典的pubsub.js,vue2中的$bus等都是用的这种模式。

    2024年02月19日
    浏览(31)
  • js设计模式——发布订阅模式

    一、概述 发布订阅模式是一种常用的设计模式,它定义了一种一对多的关系,让多个订阅者对象同时监听某一个主题对象,当主题对象发生变化时,它会通知所有订阅者对象,使它们能够自动更新 。 二、优缺点 1. 优点: 实现了发布者和订阅者之间的解耦,提高了代码的可

    2024年02月06日
    浏览(27)
  • 关于Java中单例模式(饿汉模式和懒汉模式)的简析

    目录 一.什么是单例模式 二.饿汉模式和懒汉模式 饿汉模式 代码 懒汉模式 代码 关于多线程安全的问题 如何解决懒汉模式多线程安全问题 双if判断 简单来说,就是我们在程序中通过代码进行限制,在该程序中 只能创建一个对象 因为只能创建一个对象,所以对于我们而言就有两种

    2024年02月10日
    浏览(67)
  • 【Unity程序技巧】Unity中单例模式管理器

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 :Unity基础实战 菜鸟教程 “单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一

    2024年02月08日
    浏览(29)
  • Java中单例(单态、原子)设计模式(饿汉式/懒汉式)

    先看文章目录,大致了解知识点结构,直接点击文章目录可以跳转到文章指定位置。 设计模式就是设计出来的固定问题的解决方法,描述了在软件设计过程中的一些不断重复发生的问题和解决方案。遇到类似问题的时候可以直接使用现成的模式方案。 ①单例模式中一个类只

    2024年02月04日
    浏览(28)
  • 适配器、装饰器模式

    一、装饰器模式 向一个现有的对象增加其功能而不改变其结构,属于类的包装

    2024年02月10日
    浏览(37)
  • C++之装饰器&适配器模式

    目录 一、装饰器模式 模式思想 模式简介 模式优点 模式缺点 代码实现 情景模拟 代码实现 运行结果 二、适配器模式 模式简介 介绍 优点 缺点 代码实现 情景模拟 模式简介 装饰器模式( Decorator Pattern )允许向一个现有的对象 添加新的功能 ,同时又不改变其结构。 这种类型

    2024年02月13日
    浏览(40)
  • 适配器模式:代理、适配器、桥接、装饰,这四个模式有何区别?

            关于适配器模式,今天我们主要学习它的两种实现方式,类适配器和对象适配器,以及5种常见的应用场景。同时,我还会通过剖析slf4j日志框架,来给你展示这个模式在真实项目中的应用。除此之外,在文章的最后,我还对代理、桥接、装饰器、适配器,这4种代

    2024年02月13日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包