在这篇博文中,我们将通过实例来学习TypeScript中的Singleton模式。
Singleton设计模式
Singleton是应用程序开发中简单而常用的设计模式之一。
它是一种创造性的设计模式,可以在应用程序中创建一个单一的实例或对象。只有在应用程序中创建一个类的实例。
每种编程语言都提供了这种模式的实现。
我们也可以在Typescript中实现singleton模式。这是一个简单的创建模式。
单子模式的实现
- 构造函数的私有修改器,这样这个类就不能被其他类所创建。
- 一个私有静态变量,总是返回同一个类的实例。
- 一个公共静态函数,返回该类的实例
单子模式类的例子
以下是单子类的步骤
- 创建实例静态成员变量,可以使用类而不是对象实例进行访问。
- 还在静态成员中添加了private关键字
- 在构造函数中添加了private修改器
- 外部类不能用new操作符创建。
- 声明静态方法或函数,它检查实例是否为空或未定义,它创建一个实例并返回,如果已经存在,就返回实例。
下面是一个类
class SingletonClass {
private static instance: SingletonClass;
private constructor() {
}
public static getInstance() {
if (!SingletonClass.instance) {
SingletonClass.instance = new SingletonClass();
}
return SingletonClass.instance;
}
}
我们已经创建了一个单子类,现在我们准备测试单子类。
下面是一个测试上述类的代码
let instance1 = new SingletonClass() // This gives compilation error
let instance2 = SingletonClass.getInstance()
let instance3 = SingletonClass.getInstance()
console.log(instance2==instance3) // true
如果你使用new操作符创建一个对象,会出现编译错误--'SingletonClass'类的构造函数是私有的,只能在类声明中访问。
总结
在这个简短的教程中,你学到了创建单子类和用实例测试单子类。
使用案例和优势
- 为一个类的对象创建提供全局访问,它总是有一个实例被维护。
- 在应用程序中,如果你正在实现应用程序的缓存,你将永远只维护一个缓存对象的单一实例。
- 当你在处理应用程序中的全局配置时,保持一个实例。