单例模式在TypeScript中的应用

1.设计模式

在oop编程中,是用来解决特定问题的总结(最佳实践)。设计模式----23种

扩展:

 数据结构和算法,与语言无关

 构建模式:创建对象,单例,工厂,构建

 行为模式:代理,命令,观察者(MVVM)

 结构模式:多个组件的关系 MVC架构,

 熟悉面向对象编程是设计模式的基础


2.单例模式(Singleton)

单例模式--Singleton模式:类是模板,创建该类型的多个实例

 作用:确保一个类,有且只有一个实例,程序中一些资源,只有一份,全局的作用域/context

模板:

 开发|闭合原则:

1.构造器,私有(访问修饰符)

2.提供一个公共的静态方法,获得唯一实例

 3. 饱汉式

class Singleton {

    // 属性(属性只有一份)
    n: number;
    info: string[];

    // 成员方法
    addInfo(msg: string): void {
        this.info.push(msg);
    }

    // 静态子段
    private static instance: Singleton;

    // 构造器私有
    private constructor() {
        this.n = 1;
        this.info = [];
    }

    /**
     * 获得唯一实例的类方法
     */
    public static getInstance(): Singleton {
        //    this 对象或类
        if (!this.instance) {
            // 只执行一次
            this.instance = new Singleton();
        }
        return this.instance;
    }
}

测试部分代码:

let a = Singleton.getInstance();
let b = Singleton.getInstance();

a.n = 9;
console.log(a.n);
console.log(b.n);

let c = Singleton.getInstance();
console.log(c.n);

 控制台输出结果为:

单例模式在TypeScript中的应用_第1张图片

测试部分代码:

let a = Singleton.getInstance();
let b = Singleton.getInstance();
let c = Singleton.getInstance();


console.log(a.info);
console.log(b.info);
console.log(c.info);
console.log(Singleton.getInstance().info);

 控制台输出结果为:

单例模式在TypeScript中的应用_第2张图片

测试部分代码:

let a = Singleton.getInstance();
let b = Singleton.getInstance();
let c = Singleton.getInstance();

b.addInfo("mongdb")
c.addInfo("redis");
Singleton.getInstance().addInfo("hbase");


console.log(a.info);
console.log(b.info);
console.log(c.info);
console.log(Singleton.getInstance().info);

 控制台输出结果为:

单例模式在TypeScript中的应用_第3张图片

测试部分代码:

let a = Singleton.getInstance();
let b = Singleton.getInstance();
let c = Singleton.getInstance();

b.addInfo("mongdb")
c.addInfo("redis");
Singleton.getInstance().addInfo("hbase");


console.log(a.info);
console.log(b.info);
console.log(c.info);
console.log(Singleton.getInstance().info);

a.info.pop();

console.log(a.info);
console.log(b.info);
console.log(c.info);
console.log(Singleton.getInstance().info);

 控制台输出结果为:

单例模式在TypeScript中的应用_第4张图片


4.饿汉式 

class Singleton2 {

    // 类加载时,实例的创建
    private static instance: Singleton2 = new Singleton2();

    private constructor() {

    }

    static getInstance(): Singleton2 {
        return Singleton2.instance;
        // return this.instance;
    }
}

 

你可能感兴趣的:(TypeScript)