单例模式(Singleton Pattern):
|
1 2 3 |
定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 目的:阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。 场景:如一个系统中可以存在多个打印任务,但是同时只能有一个正在工作的任务。 |
例:JS代码实现
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
const getSingleton = (() => { let instance = null function createInstance() { let privateAttribute = '我是私有属性' function privateMethod() { return `读取:${privateAttribute}` } return { publicAttribute: '我是对外暴露属性', publicMethod() { return privateMethod() }, setPrivateAttribute(value) { privateAttribute = value } } } return function () { if (instance === null) { instance = createInstance() } return instance } })() |
使用:
|
1 2 3 4 5 6 7 8 9 |
const instance1 = getSingleton() const instance2 = getSingleton() console.log(instance1 === instance2) // true // 读取:我是私有属性 console.log(instance1.publicMethod()) instance1.setPrivateAttribute('修改后的私有属性') // 读取:修改后的私有属性 console.log(instance2.publicMethod()) |

