单例模式——javascript和typescript
2023-12-13 05:49:25
    		概念
确保某个方法或者类只有一个是咧。而且自行实例子并向整个系统提供这个实例。
要点
- 某个方法或类只能一个;
- 必须自行创建这个实例
- 必须自行向整个系统提供这个实例。
UML
javascript 实现代码
const Singleton = (function() {
  let instance;
  function createInstance() {
    // 在这里可以放一些初始化逻辑
    return {
      someMethod: function() {
        // 添加单例的方法和逻辑
      }
    };
  }
  return {
    getInstance: function() {
      if (!instance) {
        instance = createInstance();
      }
      return instance;
    }
  };
})();
// 使用单例
const instance1 = Singleton.getInstance();
const instance2 = Singleton.getInstance();
console.log(instance1 === instance2); // 输出 true,因为它们是同一个实例
typescript 实现代码
class Singleton {
  private static instance: Singleton | null = null;
  private constructor() {
    // 这里可以放一些初始化逻辑
  }
  public static getInstance(): Singleton {
    if (!Singleton.instance) {
      Singleton.instance = new Proxy(new Singleton(), {
        get: function(target, prop, receiver) {
          if (prop === 'instance') {
            return undefined; // 防止通过 instance 直接访问实例
          }
          return Reflect.get(target, prop, receiver);
        }
      });
    }
    return Singleton.instance as Singleton;
  }
  public someMethod() {
    // 在这里添加单例的方法和逻辑
  }
}
// 使用单例
const instance1 = Singleton.getInstance();
const instance2 = Singleton.getInstance();
console.log(instance1 === instance2); // 输出 true,因为它们是同一个实例
    			文章来源:https://blog.csdn.net/weixin_46282323/article/details/134902077
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
    	本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!