Singleton(单例)模式有什么特点? 类的实例只有一个; 不同于静态类(或对象),我们可以推迟Singleton的初始化时间,因为有些信息在初始化期间可能无法获得 Singleton(单
Singleton(单例)模式有什么特点?
- 类的实例只有一个;
- 不同于静态类(或对象),我们可以推迟Singleton的初始化时间,因为有些信息在初始化期间可能无法获得
Singleton(单例)模式怎么实现?
例子:
'use strict';// mySingleton 一个对象,包含一个getInstance()公开方法// mySingleton.getInstance() 返回一个对象,包含两个公开的方法和一个变量publicMethod(),publicProperty,getRandomNumberlet mySingleton = (function () { let instance; // 返回一个对象,包含两个公开的方法和一个变量 function init() { // 私有方法和变量 function privateMethod() { console.log('I am private'); } let privateVariable = 'I am also private'; let privateRandomNumber = Math.random(); return { // 公有方法和变量 publicMethod:()=>{ console.log('The public can see me!'); }, publicProperty: 'I am also public', getRandomNumber:()=>{ return privateRandomNumber; } } } return { getInstance:()=>{ if(!instance){ instance = init(); } return instance; } }}());let singleA = mySingleton.getInstance();let singleB = mySingleton.getInstance();console.log(singleA.getRandomNumber() === singleB.getRandomNumber()); // true
参考资料:
《Javascript 设计模式》 【美】Addy and Osmani