DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> Javascript實現單例模式
Javascript實現單例模式
編輯:關於JavaScript     

單例模式也稱作為單子模式,更多的也叫做單體模式。為軟件設計中較為簡單但是最為常用的一種設計模式。

單例模式的介紹:

    在應用單例模式時,生成單例的類必須保證只有一個實例的存在,很多時候整個系統只需要擁有一個全局對象,才有利於協調系統整體的行為。比如在整個系統的配置文件中,配置數據有一個單例對象進行統一讀取和修改,其他對象需要配置數據的時候也統一通過該單例對象來獲取配置數據,這樣就可以簡化復雜環境下的配置管理。

    單例模式的思路是:一個類能返回一個對象的引用(並且永遠是同一個)和一個獲得該實例的方法(靜態方法,通常使用 getInstance 名稱)。那麼當我們調用這個方法時,如果類持有的引用不為空就返回該引用,否者就創建該類的實例,並且將實例引用賦值給該類保持的那個引用再返回。同時將該類的構造函數定義為私有方法,避免其他函數使用該構造函數來實例化對象,只通過該類的靜態方法來得到該類的唯一實例。

一般情況下,Javascript每次new一個對象就產生一個實例,實例指向不同的地址。就像如下:

(function(){
function Person(name){
this.name = name;
}
Person.prototype.work = function(){
console.log(this.name + " is working");
}
var p1 = new Person("Darren");
p1.work();
var p2 = new Person("Jack");
p2.work();
}());

以上,每次new出一個Person對象都是不同的。

如何在Javascript中實現單例模式呢?

--在生成某各對象時先判斷是否存在。存在就不生成對象,不存在就生成對象。

(function(){
var PersonSingleton = (function(){
var instance;
function init(){
return {
name: 'Anonymous',
work: function(){
console.log(this.name + ' working');
}
};
}
return {
getInstance: function(){
if(!instantiated){
instantiated = init();
}
return instantiated;
}
}
})();
var p1 = PersonSingleton.getInstance();
p1.work();
var p2 = PersonSingleton.getInstance();
p2.work();
}());

以上,通過PsonSIngleton對象的getInstance方法得到的實例每次都是一樣的。

關於javascript單例模式的相關知識就給大介紹到這裡,希望對大家有所幫助。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved