美文网首页设计模式
用ts学习单件模式

用ts学习单件模式

作者: 潘杉杉_06_03 | 来源:发表于2018-10-29 20:52 被阅读31次

单件模式 (Singleton Pattern)

定义: 确保一个类只有一个实例,并提供一个局部访问点。

单件模式也称单例模式。

js 没有多线程所以在 ts 没有 synchronized volatile 这样的关键字,不能练习多线程下的单件模式。

在 js 中单件模式其实在很多地方被用到比如 vue 的 vueRouter ,eventBus 等。

单件模式确保一个类只有一个实例,不会导致本该存在一个的事物重复出现。

class Singleton {
    static instance // 静态变量
    public name // 局部变量
    constructor(){
        if(Singleton.instance){ // 如果单例存在
            return Singleton.instance // 中断构造函数的建造过程返回已经存在的单例
        }
        Singleton.instance = this // 否则让构造函数正常运行新建单例并且保存下来
    }
}

let instance1 = new Singleton()

instance1.name = 'A';

console.log(`instance1.name:${instance1.name}`)

let instance2 = new Singleton()

console.log(`instance2.name:${instance2.name}`)

instance2.name = 'B'

console.log(`instance2.name:${instance2.name}`)

console.log(`instance1 === instance2 ? ==> ${instance1 === instance2}`)

浏览器输出结果:

VM18139:12 instance1.name:A
VM18139:14 instance2.name:A
VM18139:16 instance2.name:B
VM18139:17 instance1 === instance2 ? ==> true

相关代码 demo05
(完)

相关文章

  • 用ts学习单件模式

    单件模式 (Singleton Pattern) 定义: 确保一个类只有一个实例,并提供一个局部访问点。 单件模式...

  • TS 单件设计模式

    运TS 类,首先会为静态成员开辟内存空间,静态成员的内存空间分配的时间要早于对象空间的分配。并且无论是否调用这个类...

  • 用ts学习策略模式

    策略模式 (Strategy Pattern) 定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他...

  • 用ts学习命令模式

    命令模式 (Command Pattern) 定义: 将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数...

  • 用ts学习工厂模式

    工厂模式 (Factory Pattern) 定义: 定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。...

  • 用ts学习状态模式

    状态模式 (State Pattern) 定义:允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的...

  • 用ts学习装饰器模式

    装饰器模式 (Decorator Pattern) 假如我们需要为一家咖啡店比如星巴克写一个自动售货系统,需要定义...

  • 用ts学习迭代器模式

    迭代器模式 (Iterator Pattern) 定义: 提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露...

  • 用ts学习模板方法模式

    模板方法模式 (Template Pattern) 定义: 在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类...

  • 用ts学习观察者模式

    观察者模式 (Observer Pattern) 定义:在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,...

网友评论

    本文标题:用ts学习单件模式

    本文链接:https://www.haomeiwen.com/subject/uxpitqtx.html