最近看到老大寫了一段神奇的代碼,感覺(jué)終于js中聽過(guò)沒(méi)用過(guò)的設(shè)計(jì)模式突然有了意義,這里記錄一下:
class Cache {
constructor() {
this.storage = {};
}
set(k, v) {
this.storage[k] = v;
}
get(k) {
return this.storage[k];
}
destroy(k) {
if (this.storage[k].destroy) {
this.storage[k].destroy();
} else {
delete this.storage[k];
}
}
}
export default new Cache();
最開始我以為這里只是返回一個(gè)Cache類,但是在debug代碼的時(shí)候發(fā)現(xiàn)constructor只執(zhí)行了一次,讓我們來(lái)回顧一下單例模式的定義:只允許實(shí)例化一次,可以用一個(gè)對(duì)象劃一個(gè)命名空間,用于避免命名重復(fù)的問(wèn)題,幫助管理靜態(tài)變量(只能訪問(wèn)不能修改)具體信息可以查看我之前的文章。
因而這里Cache方法就為外部提供了一種方法來(lái)管理變量。