前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TypeScript系列教程《单例》

TypeScript系列教程《单例》

作者头像
星宇大前端
发布2022-11-07 14:30:55
4850
发布2022-11-07 14:30:55
举报
文章被收录于专栏:大宇笔记大宇笔记

单例模式是一个编程中使用频率很高的模式,各种语言的写法都差不多,TS的也不例外。

单例模式是为了解决一个应用中的内存只存在一份,不允许多个的需求,类似于主题。下面通过theme 主题切换举例

主题单例编写

首先单例一般基于一个类,屏蔽到类的构造函数,以免通过其他方式生成类实例。

只要确保函数生成途径只有一种且保证实例只有一个即可。

单例代码:

代码语言:javascript
复制
class Theme {
  //一个静态全局实例
  private static instance:Theme
  //不允许访问其他构造函数
  private constructor() {}
  static shared(){
    if (!this.instance) {
      this.instance = new Theme()
    }

    return this.instance
  }
}

到这应该就完成了主要部分

思考

现在有个需求,需要单例有个主题属性,和切换方法的时候,是否还用static

我理解的js 中的static 相当于往类的原型里添加,所以我觉得还是为了少污染类的原型,还是觉得应该加到对象上。

代码语言:javascript
复制
class Theme {
  //一个静态全局实例
  private static instance:Theme
  //不允许访问其他构造函数
  private constructor() {}
  theme:string = 'dark'
  static shared(){
    if (!this.instance) {
      this.instance = new Theme()
    }

    return this.instance
  }

  changeTheme(theme:string){
    this.theme = theme
  }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-10-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 主题单例编写
  • 思考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档