美文网首页
ES6实现单例模式

ES6实现单例模式

作者: HonneyHao | 来源:发表于2019-02-07 13:34 被阅读0次

作用/意义:

单例模式用于多次创建实例没有意义,甚至损坏性能的地方(如创建Db对象,连接数据库),目的是一个类只能创建出一个对象

class Db {
    //ES6类的静态方法(只能直接由类名调用的方法):static getInstance
    //ES6类的静态属性:直接挂载在类名上的方法,如:Db.instance()
    static getInstance() {
        if (!Db.instance) {
            Db.instance = new Db();
            return Db.instance
        }
        return Db.instance;
    }
    constructor(name, age) {
        this.name = name;
        this.age = age;
        //在constructor里面可以初始化地(对象一创建就开始)运行对象的方法
        this.connect()
    }
    connect() {
        console.log("I am sillyB,我连接上了数据库")
    }
    find() {
        console.log("查询数据库")
    }
}
//单例模式创建对象时,不再使用类直接创建对象,而是使用类名调用类的静态方法来创建(或返回)对象
var db1 = Db.getInstance()
var db2 = Db.getInstance()
var db3 = Db.getInstance()
db1.find()
db2.find()
db3.find()
/*结果:
I am sillyB,我连接上了数据库
查询数据库
查询数据库
查询数据库*/

从运行结果来看,构造函数只运行了一次,除第一次外,每次返回的都是原来的那个对象

相关文章

  • javascript 如何使用ES6语法来创建一个单例

    js 的单例模式尤其是使用es6来实现和java有很大不同,下面我将搜集到实现单例模式的资料进行整理以备晚点使用,...

  • Android设计模式总结

    单例模式:饿汉单例模式://饿汉单例模式 懒汉单例模式: Double CheckLock(DCL)实现单例 Bu...

  • python面试题-2018.1.30

    问题:如何实现单例模式? 通过new方法来实现单例模式。 变体: 通过装饰器来实现单例模式 通过元类来创建单例模式...

  • 单例模式

    一、实现单例模式 或者 二、透明的单例模式 三、用代理实现单例模式 四、JavaScript中的单例模式 在Jav...

  • 单例模式和GCD单例实现

    1、传统单例模式2、GCD单例模式3、用宏实现GCD单例模式4、用宏实现GCD单例模式,名称随类名变化而变化 单例...

  • kotlin实现单例模式

    1.懒汉式实现单例模式 2.线程安全懒汉式实现单例模式 3.双重校验懒汉式实现单例模式 4.静态内部类方式实现单例模式

  • 单例模式之枚举类enum

    通过枚举实现单例模式 枚举类实现单例模式的优点 对于饿汉式单例模式和懒汉式单例模式了解的同学,使用以上两种单例模式...

  • 单例模式

    单例模式及C++实现代码单例模式4种实现详解 c++11改进我们的模式之改进单例模式 单例模式(Singleton...

  • 单例模式

    饿汉模式: 懒汉模式: Double CheckLock(DCL)实现单例 静态内部类实现单例 枚举单例 使用容器...

  • iOS 单例

    单例模式实现不能使用继承 定义单例实现 简写 定义单例实现宏

网友评论

      本文标题:ES6实现单例模式

      本文链接:https://www.haomeiwen.com/subject/aqowsqtx.html