侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

Javascript 设计模式学习之三 Singleton(单例)模式

2024-05-06 星期一 / 0 评论 / 0 点赞 / 58 阅读 / 1724 字

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

 

广告 广告

评论区