看用TypeScript怎樣實現(xiàn)常見的設(shè)計模式,順便復(fù)習(xí)一下。
單例模式 Singleton
特點:在程序的生命周期內(nèi)只有一個全局的實例,并且不能再new出新的實例。
用處:在一些只需要一個對象存在的情況下,可以使用單例,比如Cache, ThreadPool等。
注意:線程安全,當(dāng)然,這在單線程的JavaScript環(huán)境里是不存在的。
下面用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