博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式在 TypeScript 中的应用 - 单例模式
阅读量:6171 次
发布时间:2019-06-21

本文共 1312 字,大约阅读时间需要 4 分钟。

定义

只有一个实例,并提供全局访问。

实现

思路:用一个变量来标识当前是否已经为某个类创建过对象,如果是,则在下一次获取该类的实例时,直接返回之前创建的对象,否则返回新对象。

饿汉模式

特点:类加载时就初始化。

class Singleton {  private static instance = new Singleton()  // 将 constructor 设为私有属性,防止 new 调用  private constructor () {}  static getInstance (): Singleton {    return Singleton.instance  }}const singleton1 = Singleton.getInstance()const singleton2 = Singleton.getInstance()console.log(singleton1 === singleton2) // true

懒汉模式

特点:需要时才创建对象实例。

class Singleton {  private static instance: Singleton    private constructor () {}  static getInstance (): Singleton {    if (!Singleton.instance) {      Singleton.instance = new Singleton()    }    return this.instance  }}const singleton1 = Singleton.getInstance()const singleton2 = Singleton.getInstance()console.log(singleton1 === singleton2) // true

简单栗子

class Singleton {  private constructor (name: string, age: number) {    this.name = name    this.age = age  }  private static instance: Singleton  public name: string  public age: number  static getInstance (      name: string,      age: number    ): Singleton {    if (!this.instance) {      this.instance = new Singleton(name, age)    }    return this.instance  }}const singleton1 = Singleton.getInstance('Mary', 20)const singleton2 = Singleton.getInstance('Jack', 20)console.log(singleton1, singleton2)

转载地址:http://ietba.baihongyu.com/

你可能感兴趣的文章
JAVA中的内部类(一)
查看>>
20145337 《信息安全系统设计基础》第五周学习总结
查看>>
Android常见控件— — —ProgressBar
查看>>
用cesium本身添加水纹效果
查看>>
知识扩展
查看>>
MySQL事务锁问题-Lock wait timeout exceeded
查看>>
考勤助手——学生查询出勤用例图
查看>>
ElasticSearch 专业术语
查看>>
NSRange 用法
查看>>
All roads lead to Rome, some smooth, some rough.
查看>>
css3动画--边框线条动画
查看>>
[摘] SQLPLUS Syntax
查看>>
有穷自动机的构造与识别
查看>>
网上免费阅读的计算机编程书籍列表
查看>>
《1024伐木累》-生病,开发网站
查看>>
51 nod 1766 树上的最远点对(线段树+lca)
查看>>
Attention注意力机制介绍
查看>>
python 打印出所有的"水仙花数"
查看>>
Ubuntu安装配置vsftpd
查看>>
02工厂方法模式FactoryMethod
查看>>