-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
Description
在单例模式中,单例类自己创建实例对象,并确保全局有且仅有该单例对象。
意义
- 避免全局对象反复销毁和创建,提升性能。
- 可以解决在多线程模式数据同步问题。
注意
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类提供给其他对象该单例对象的全局访问方式。
JS 例子
假设现在页面有一个遮罩层 mask,用户交互可以控制它展示或隐藏,显然,如果每次都要销毁或创建这个遮罩层,会额外消耗一些性能,因此,我们通过单例模式和 css 来控制它的展示与隐藏。
// 创建 mask 的 dom 操作
function createMask() {
return document.body.appendChild( document.createElement('div') );
}
// 构建单例对象
const createSingleton = (createFn) => {
let singleton
return (...args) => {
singleton = singleton || createFn(...args)
return singleton
}
}
const mask = createSingleton(createFn)()Reactions are currently unavailable