单例模式
什么情况下使用
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
加载模式
- 懒加载:使用到对象的时候再创建对象,可以避免内存浪费,但是无法保证线程安全
- 预加载:还没有使用到对象的时候就已创建了,可能内存浪费,但是可以保障线程安全
怎么使用
主要作用是保证一个类只有一个实例,并且不需要初始化就能用。
- 对于多线程语言(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
}
}