亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

理解JavaScript設(shè)計(jì)模式中的單例模式

 更新時(shí)間:2022年04月26日 14:13:32   作者:掘金安東尼  
這篇文章主要介紹了理解JavaScript設(shè)計(jì)模式中的單例模式,單例模式即Singleton?Pattern是最簡(jiǎn)單的設(shè)計(jì)模式之一,下文更多相關(guān)介紹感興趣的小伙伴可以參考一下

單例模式(Singleton Pattern)是最簡(jiǎn)單的設(shè)計(jì)模式之一。這種類(lèi)型的設(shè)計(jì)模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對(duì)象的最佳方式。

單例模式涉及到一個(gè)單一的類(lèi),該類(lèi)負(fù)責(zé)創(chuàng)建自己的對(duì)象,同時(shí)確保只有單個(gè)對(duì)象被創(chuàng)建。這個(gè)類(lèi)提供了一種訪問(wèn)其唯一的對(duì)象的方式,可以直接訪問(wèn),不需要實(shí)例化該類(lèi)的對(duì)象。

  • 1、單例類(lèi)只能有一個(gè)實(shí)例。
  • 2、單例類(lèi)必須自己創(chuàng)建自己的唯一實(shí)例。
  • 3、單例類(lèi)必須給所有其他對(duì)象提供這一實(shí)例。

這樣做的缺點(diǎn)就是:沒(méi)有接口,不能繼承,與單一職責(zé)原則沖突,一個(gè)類(lèi)應(yīng)該只關(guān)心內(nèi)部邏輯,而不關(guān)心外面怎么樣來(lái)實(shí)例化。

優(yōu)點(diǎn)則有:

  • 1、在內(nèi)存里只有一個(gè)實(shí)例,減少了內(nèi)存的開(kāi)銷(xiāo),尤其是頻繁的創(chuàng)建和銷(xiāo)毀實(shí)例。
  • 2、避免對(duì)資源的多重占用。

最簡(jiǎn)單的單例模式舉例:

// 定義一個(gè)類(lèi)
function Singleton(name) {
this.name = name;
this.instance = null;
}
// 原型擴(kuò)展類(lèi)的一個(gè)方法getName()
Singleton.prototype.getName = function() {
console.log(this.name)
};
// 獲取類(lèi)的實(shí)例
Singleton.getInstance = function(name) {
if(!this.instance) {
this.instance = new Singleton(name);
console.log(this.instance) // {name: 'a', instance: null}
}
return this.instance
};
// 獲取對(duì)象1
var a = Singleton.getInstance('a');
// 獲取對(duì)象2
var b = Singleton.getInstance('b');
// 進(jìn)行比較
console.log(a === b); // true

不過(guò),這樣寫(xiě),不夠直觀,因?yàn)槲覀兺ǔ6际峭ㄟ^(guò) new 來(lái)創(chuàng)建實(shí)例的;

所以,改寫(xiě)為:

// 單例構(gòu)造函數(shù)
function CreateSingleton (name) {
this.name = name;
this.getName();
};
// 獲取實(shí)例的名字
CreateSingleton.prototype.getName = function() {
console.log(this.name)
};
// 單例對(duì)象
var Singleton = (function(){
var instance;
return function (name) {
if(!instance) {
instance = new CreateSingleton(name);
}
return instance;
}
})();
// 創(chuàng)建實(shí)例對(duì)象1
var a = new Singleton('a');
// 創(chuàng)建實(shí)例對(duì)象2
var b = new Singleton('b');
console.log(a===b);

到此這篇關(guān)于理解JavaScript設(shè)計(jì)模式中的單例模式的文章就介紹到這了,更多相關(guān)JS單例模式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論