W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
"設(shè)計(jì)模式"(Design Pattern)是針對(duì)編程中經(jīng)常出現(xiàn)的、具有共性的問(wèn)題,所提出的解決方法。著名的《設(shè)計(jì)模式》一書(shū)一共提出了23種模式。
Singleton模式指的是一個(gè)“類”只能創(chuàng)造一個(gè)實(shí)例。由于JavaScript語(yǔ)言沒(méi)有類,單個(gè)對(duì)象可以直接生成,所以實(shí)際上,沒(méi)有必要部署Singleton模式。但是,還是可以做到的。
var someClass = {
_singleton: null,
getSingleton: function() {
if (!this._singleton) {
this._singleton = {
// some code here
}
}
return this._singleton;
}
};
var instance = someClass.getSingleton();
生成實(shí)例的時(shí)候,調(diào)用getSingleton方法。該方法首先檢查_(kāi)singleton屬性是否有值,如果有值就返回這個(gè)屬性,如果為空則生成新的實(shí)例,并賦值給_singleton屬性,然后返回這個(gè)實(shí)例。這樣就保證了生成的實(shí)例都是同一個(gè)對(duì)象。
為了保證實(shí)例不被改寫(xiě),可以關(guān)閉它的寫(xiě)入開(kāi)關(guān)。
Object.defineProperty(namespace, "singleton",
{ writable: false, configurable: false, value: { ... } });
也可以考慮使用Object.preventExtensions()、Object.seal()、Object.freeze()等方法,限制對(duì)實(shí)例進(jìn)行寫(xiě)操作。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: