typescript实现单例设计模式,附源码分析

单例模式确保一个类只有一个实例,并提供一个全局访问点。在TypeScript中,通过将构造器设为私有并提供一个静态getInstance方法来实现。文章举例说明了单例模式在Vuex、localStorage等场景中的应用。
摘要由CSDN通过智能技术生成


单例设计模式的优点

单例模式,就是说一个类只创建一个实例。
应用场景: Vuex;localStorage;日志记录;前端confirm提示框等。因为在一个程序中,只需要一个实例,里面的属性和方法都是共享的,没必要创建多个实例占据内存。
举例:在vuex中,使用createStore创建一个实例,然后挂载到vue app上,后续只存在这一个单一实例。
在这里插入图片描述
在这里插入图片描述

单例要求

  • 对象创建不能由外部创建,只能在类中创建,即构造器要变为private。
  • 属性和方法外部不能访问,对外都只提供一个唯一的可以访问的方法或属性。
  • 唯一的方法或属性要为static,方便外部访问。

typescript实现单例

//这个类模拟创建一个localstroge
export default class MyLocalStorage {
  count3!: number;
  //只有一个实例
   private static localstorage: MyLocalStorage
  //把构造器设置为私有的,不允许外部来创建类的实例
  private constructor() {
    console.log("这是TS的单件设计模式的静态方法的构造器");
  }
  //至少应该提供一个外部访问的方法或属性,外部可以通过这个方法或属性来得到一个对象
  public static getInstance() {
  //判断是否只有一个实例
    if (!this.localstorage) {
      console.log("我是一个undefined的静态属性,用来指向一个对象空间的静态属性")
      this.localstorage = new MyLocalStorage()
    }
    return this.localstorage
  }
	
  public setItem(key: string, value: any) {

    localStorage.setItem(key, JSON.stringify(value))
  }
  public getItem(key: string) {

    let value = localStorage.getItem(key)
    return value != null ? JSON.parse(value) : null;

  }
}
//外部调用第二步提供的静态方法来获取一个对象
let value = MyLocalStorage.getInstance()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值