单例模式(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
}
- 符合开放封闭原则