前言

在很多业务需求中,我们都需要一个类只实例化一次来保证这个类中很多方法来保存数据。比如说在这个类中,有个方法需要缓存用户操作数据,如果每一次都实例化的话,那么每次都只能存放当前操作数据。所以我们需要保证这个类只能实例化一次。

代码实现

这里直接跳过单例模式是什么了,我相信在实际需求中各位都会碰到类只允许创建一次的需求,在我现在实际代码开发中,单例模式是运用最多的模式了,那么代码我就不用js实现了,我用Ts来实现,更加清晰易懂。

  1. class Singleton(){
  2. private static _instance:Singleton;
  3. public static get instance() {
  4. if (!this._instance) {
  5. this._instance = new Singleton();
  6. } else {
  7. console.log('lazy loading singleton has created')
  8. }
  9. return this._instance;
  10. }
  11. public methodXX1(){};
  12. public methodXX2(){};
  13. }
  14. //使用
  15. Singleton.instance.methodXX1();

通过Singleton.instance我们能够保证这个类只会实例化一次,在js中是采用闭包来实现的,于是可以达到实例化出来的对象常驻内存中,所以调用它的方法就可以一直用这个实例化出来的对象去调用,而不需要再一次去实例化一个对象。在我现在写的需求中,创建类的时候我都会提供一个instance来暴露出去给别人使用。