模式:单例模式

概念:系统中被唯一使用;一个类只有一个实例。

UML:java的方式

/**
 * @description 单例模式:只实例化一次。用闭包实现单例模式。
 *              场景:jq的$只实例化一次。系统中的公共库方法,实例化一次就好。
          
公共库,不管谁去用,都只实例化一次。所以必须用单例模式去约束。再new就报错。
*/

class SingleMode {
    static
        login() {
        console.log('单例模式')
    }
}
SingleMode.getInstance = (function () {
    let instance; //闭包内的变量不会消亡,私有属性。把函数当成返回值.
    return function () {
        if (!instance) { //判断是否实例化过。因为闭包内的变量不会消失,实例化过便一直存在。
            instance = new SingleMode()
        }
        return instance
    }
})();

const log1 = SingleMode.getInstance()
const log2 = SingleMode.getInstance()
// console.log('true', log1 === log2)

let log3 = SingleMode.getInstance() //无法避免,,因为es6 没有private

 

posted @ 2020-11-23 17:04  毛栗的demo  阅读(84)  评论(0)    收藏  举报