Skip to content

设计模式 - 单例模式 #16

@DelBlank

Description

@DelBlank

在单例模式中,单例类自己创建实例对象,并确保全局有且仅有该单例对象。

意义

  1. 避免全局对象反复销毁和创建,提升性能。
  2. 可以解决在多线程模式数据同步问题。

注意

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)()

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions