设计模式——单例模式

75 阅读1分钟

单例模式

什么情况下使用

保证一个类仅有一个实例,并提供一个访问它的全局访问点。

加载模式

  1. 懒加载:使用到对象的时候再创建对象,可以避免内存浪费,但是无法保证线程安全
  2. 预加载:还没有使用到对象的时候就已创建了,可能内存浪费,但是可以保障线程安全

怎么使用

主要作用是保证一个类只有一个实例,并且不需要初始化就能用。

  • 对于多线程语言(Java,C#,C++等)
    • 要考虑线程安全,网上有很多例子,选一个合适的就行
  • 对于单线程语言(nodejs)
    • 可以参考多线程语言来实现,不需要考虑线程安全
    • 也可以比较随意,直接new一个对象并导出给其它地方使用即可。
export default new class ServiceA {

}

class ServiceA {
    //一个静态全局实例
    private static instance:ServiceA
    //不允许访问其他构造函数
    private constructor() {}
    static getInstance(){
        if (!this.instance) {
            this.instance = new ServiceA()
        }
        return this.instance
    }
}