看用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