单例模式与构造器模式

单例模式

1、是什么

单例模式(Singleton Pattern):创建型模式,提供了一种创建对象的最佳方式,这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建

在应用程序运行期间,单例模式只会在全局作用域下创建一次实例对象,让所有需要调用的地方都共享这一单例对象。

从定义上来看,全局变量好像就是单例模式,但是一般情况我们不认为全局变量是一个单例模式,原因是:

  • 全局命名污染
  • 不易维护,容易被重写覆盖

实现

实现模块之间的独立划分「但是也可以实现模块之间方法的相互调用」

js 复制代码
// 程序员A开发的-模块A
var AModule = (function () {
    var data = [];

    function bindHTML() {
        // ...
    }

    function change() {
        // ...
    }

    return {
        change: change
    };
})();

// 程序员B开发的-模块B
var BModule = (function () {
    var data = [];

    function bindHTML() {
        // ...
    }

    AModule.change();

    return {
        bindHTML: bindHTML
    };
})();

构造器模式

单例模式会先执行一个自定义函数,形成闭包。如果不想每次执行都修改同一个变量,引入类和实例的概念。

希望执行的方法是一个,但是有单独的私有容器,每一次修改的是自己独有的容器

面向对象:类和实例。

类:可以创建出很多不同的实例,每一个实例与每一个实例之间会存在私有的属性,也可以基于prototype实现出公共的属性方法。

js 复制代码
// AModule:类「构造函数」
class AModule {
    constructor() {
        // this->每个类的实例
        this.arr = [];
    }
    // 原型上 公共的属性和方法
    change(val) {
        this.arr.push(val);
        console.log(this.arr);
    }
}

let A1 = new AModule;
let A2 = new AModule;
console.log(A1, A2);
console.log(A1 === A2); //->false
console.log(A1.arr === A2.arr); //->false
console.log(A1.change === A2.change); //->true
A1.change(10);
A2.change(20); 
相关推荐
代钦塔拉1 小时前
【C++/Qt 进阶】设计模式系列(5):适配器模式——给“不兼容的接口“贴一层翻译膜
c++·qt·设计模式
bigbread16 小时前
策略模式 + 工厂方法模式在项目中的实战应用
设计模式
高晶16 小时前
C 语言实现 BMS 系统中 SPI 通信协议实战指南
设计模式·程序员
代钦塔拉16 小时前
【C++/Qt 进阶】设计模式系列(2):工厂模式——从游戏角色到披萨店
c++·算法·设计模式
高晶18 小时前
2A3 单端甲类功放从零制作全攻略:电路设计、焊接调试到煲机维护一站式指南
前端·设计模式
代钦塔拉20 小时前
【C++/Qt 进阶】设计模式系列(4):原型模式——用“克隆“代替“重新构造“
c++·qt·设计模式
博风1 天前
11、设计模式应用举例:迭代器模式:使用多个集合存储对象
设计模式·迭代器模式
日和雫2 天前
面向对象与面向过程,谁才是“银弹”?
设计模式
geovindu2 天前
rust: Iterator Pattern
开发语言·后端·设计模式·rust·行为模式·迭代器模
高晶3 天前
ARM 嵌入式 Linux 系统启动流程实战指南
设计模式·程序员