Java教程

[干货]设计模式:六种单例的创建方式,上岸蚂蚁金服

本文主要是介绍[干货]设计模式:六种单例的创建方式,上岸蚂蚁金服,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
  • 传统的单例模式和new 创建对象的调用不一样

  • 调用者要调用xxx.getInstance才能获得该单例

function Singleton(name) {

    this.name = name;

}

Singleton.getInstance = function (name) {

    if(this.instace){

        return this.instace;

    }else {

        this.instace = new Singleton(name);

        return this.instace;

    }

};

var a = Singleton.getInstance('a');

var b = Singleton.getInstance('b');

console.log(a===b); //true 

5."透明"的单例模式
  • 透明”的单例类,用户从这个类中创建对象的时候,可以像使用其他任何普通类一样

  • 直接 new 一个对象

  • 不能new 多个对象,扩展性不好

var instace;

function Person(name) {

    this.name = name;

    if (!instace) {

        instace = this;

    }

    return instace;

}



Person.prototype.getName = function () {

    console.log(this.name);

};

var a = new Person('a');

var b = new Person('b');

console.log(a===b); 

6.代理模式创建单例模式
  • 代理模式:自己不去做,委托中间人做

  • Person是一个普通类,通过new Person可以创建一个对象

  • 用代理模式创建CreateSinglePerson方法,通过new CreateSinglePerson可以创建一个单例

function Person(name) {

    this.name = name;

}

Person.prototype.getName = function () {

    console.log(this.name);

};

var CreateSinglePerson = (function (name) {

    var instance;

    return function () {

        if (!instance) {

            instance = new Person(name);

        }

        return instance;

    };

})();

var a = new CreateSinglePerson('a');

var b = new CreateSinglePerson('b');

console.log(a === b);

var c = new Person('c');

var d = new Person('d');

console.log(c === d); 

JavaScript中的单例模式

  • 单例模式的核心是确保只有一个实例,并提供全局访问

  • 在JavaScript可以通过直接创建一个对象来实现单例模式

  • 可以用闭包的方式实现私有变量

let MyApp = {

  name:'app',

  getName:function() {

    console.log(this.name);

  }  

};

let MyApp2 = (function(){

    var _name = 'app';

    return {

        getName:function() {

            console.log(_name);

        } 

    }

})(); 

#####惰性单例

  • 惰性单例是指在需要的时候才创建

这篇关于[干货]设计模式:六种单例的创建方式,上岸蚂蚁金服的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!