【设计模式】创建型模式-单例模式

单例模式(Singleton Pattern)

单例模式中的“单例”,“单”:一个,独一份;“例”:实例。即:单例模式是具有唯一性的。

单例模式的定义:保证一个类仅有一个实例,并提供全局访问。

示例:

class Login {
    foo() {
        let oDiv = {'foo':1244}
        return oDiv
    }
}
// 单例设计模式
class Single {
    // getSingle() 为一个闭包 ,使用闭包保存局部作用域中的单例对象并返回。
    getSingle(fn) {
        let result;
        return function() {
            return result || (result = fn.apply(this, arguments))
        }
    }
}

let create = (new Single()).getSingle((new Login()).foo)
let layout1 = create()
let layout2 = create()
console.log(layout1 === layout2) // true

小结

  • 单例模式的主要思想就是,实例如果已经创建,则直接返回
function creatSingleton() {
    var obj = null
    // 实例如已经创建过,直接返回
    if (!obj) {
        obj = xxx
    }
    return obj
}
  • 符合开放封闭原则

Guess you like

Origin blog.csdn.net/qq_38987146/article/details/117806895