欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

理解JavaScript設計模式中的單例模式

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

單例模式(Singleton Pattern)是最簡單的設計模式之一。這種類型的設計模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對象的最佳方式。

單例模式涉及到一個單一的類,該類負責創(chuàng)建自己的對象,同時確保只有單個對象被創(chuàng)建。這個類提供了一種訪問其唯一的對象的方式,可以直接訪問,不需要實例化該類的對象。

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

這樣做的缺點就是:沒有接口,不能繼承,與單一職責原則沖突,一個類應該只關心內部邏輯,而不關心外面怎么樣來實例化。

優(yōu)點則有:

  • 1、在內存里只有一個實例,減少了內存的開銷,尤其是頻繁的創(chuàng)建和銷毀實例。
  • 2、避免對資源的多重占用。

最簡單的單例模式舉例:

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

不過,這樣寫,不夠直觀,因為我們通常都是通過 new 來創(chuàng)建實例的;

所以,改寫為:

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

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

相關文章

最新評論