看用TypeScript怎样实现常见的设计模式,顺便复习一下。

单例模式 Singleton

特点:在程序的生命周期内只有一个全局的实例,并且不能再new出新的实例。

用处:在一些只需要一个对象存在的情况下,可以使用单例,比如Cache, ThreadPool等。

注意:线程安全,当然,这在单线程的JavaScript环境里是不存在的。

下面用TypeScript写一个Cache来看看单例模式:

class Cache{    public static readonly Instance: Cache = new Cache();    private _items: {[key: string]: string} = {};    private Cache(){
 
    }    set(key: string, value: string){        this._items[key] = value;        console.log(`set cache with key: '${key}', value: '${value}'`);
    }    get(key: string): string{        let value = this._items[key];        console.log(`get cache value: '${value}' with key: '${key}'`);        return value;
    }
}

Cache.Instance.set('name', 'brook');
Cache.Instance.get('name');

输出:

set cache with key: 'name', value: 'brook'get cache value:&nb