美文网首页
设计模式-单例模式

设计模式-单例模式

作者: xinhui9056 | 来源:发表于2018-09-18 10:35 被阅读0次
    es5实现方式
    var Singleton = function(name) {
     this.name = name;
     //一个标记,用来判断是否已将创建了该类的实例
     this.instance = null;
    }
    // 提供了一个静态方法,用户可以直接在类上调用
    Singleton.getInstance = function(name) {
     // 没有实例化的时候创建一个该类的实例
     if(!this.instance) {
      this.instance = new Singleton(name);
     }
     // 已经实例化了,返回第一次实例化对象的引用
     return this.instance;
    }
    //用户可以通过一个广为人知的接口,对该实例进行访问。
    //我们尝试对该对象进行两次实例化,观察两次实例化结果是否指向同一个对象。
    var a = Singleton.getInstance('sven1');
    var b = Singleton.getInstance('sven2');
    // 指向的是唯一实例化的对象
    console.log(a === b);
    //返回结果是:true。说明a、b之间是引用关系。
    
    es6实现方式
    class Singleton {
     constructor(name) {
        this.name = name;
        this.instance = null;
     }
     // 构造一个广为人知的接口,供用户对该类进行实例化
     static getInstance(name) {
        if(!this.instance) {
           this.instance = new Singleton(name);
        }
        return this.instance;
     }
    }
    

    相关文章

      网友评论

          本文标题:设计模式-单例模式

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