首頁 > web前端 > js教程 > JavaScript設計模式之單件模式介紹

JavaScript設計模式之單件模式介紹

PHPz
發布: 2018-09-30 09:12:40
原創
1092 人瀏覽過

這篇文章主要介紹了JavaScript設計模式之單件模式介紹,單件模式,就是靜態化的訪問中已經實例化的對象,這個對像只能通過一個唯一的入口訪問,已經實例或待實例化的對象,需要的朋友可以參考下。

單件模式說明

1、說明:單件模式,就是靜態化的存取中已經實例化的物件,這個物件只能透過一個唯一的入口訪問,已經實例或待實例化的物件;物件導向語言如Java, .Net C#這樣的服務端動態語言裡,能確保類別的操作有順的進行,避免並行操作使資料發生混亂的情況;

2、單件模式的好處:

1)、減少new 的操作,以免加快記憶體頻繁操作,佔用記憶體;
2) 、盡量減少大系統的對象的開銷;
3)、就是上面說的,可以保障某些類型的操作有順序準確的操作,以免並行處理引起的數據異常現象;

當然上面說的好處,都是說服務端語言裡的。在javascript這種弱型的語言,不要糾結那麼多,因為腳本都在自己的客戶端這邊操作的,沒有什麼操作衝突的問題;相當於整個伺服器就你一個人在用,不用擔心,你的數據會被其他什麼人操作的問題;

實例源碼

var Singleton = {
    instance: null,
    MailSender: function() {
        var self = this;
        self.to = '';
        self.title = '';
        self.content = '';
        self.send = function() {
             //send body
        }
    },
    getInstance : function() {
        if (this.instance == null) {
            this.instance = new Singleton.MailSender();
        }
        return this.instance;
    }
}
登入後複製

使用方法:

var mail = Singleton.getInstance();
mail.to = 'toname#mail.com';
mail.title = '单件模式发送';
mail.content = '发送内容';

mail.send();
登入後複製

當像有些全域框架,像是像DWZ 這樣的富UI框架,創建一個全域的Singleton 後,Singleton.instance 都有價值了,就不必要再創建;

當然如果是寫成這樣的,會比較明了,跟服務端語言一置:

Singleton.getInstance().to = 'toname#mail.com';
Singleton.getInstance().title = '单件模式发送';
Singleton.getInstance().content = '发送内容';

Singleton.getInstance().send();
登入後複製

其他實說明

單件模式在什麼的地方,比較有用呢?例如有一個操作伺服器上一個統一的設定檔時,例如像大規模並發操作還需要注意先來後到的情況時,例如交易所的操作流程記錄等,都可以用單件模式來操作;

另外:單件模式的方式:

1. 上頭那種叫懶方式

2. 餓棍方式:

var Singleton = {
    instance : new Singleton.MailSender(),
    MailSender : function() {
      var self = this;
      self.to = '';
      self.title = '';
      self.content = '';
      self.send = function() {
          //send body
      }
   },
   getInstance : function() {
        return this.instance;
   }
}
登入後複製

使用方法一樣;

使用閉包方式建立單件模式,隱藏instance 物件

1. 程式碼:

var Singleton = (function() {
    var instance = null;
    function MailSender() {
       this.to = '';
       this.title = '';
       this.content = '';
    }
    MailSender.prototype.send = function() {
       //send body
    }
    return {
       getInstance : function() {
          if (instance == null) {
             instance = new MailSender();
          }
          return instance;
       }
    }
})();
登入後複製

2. 使用方法:

//一样用法
var mail = Singleton.getInstance();
mail.to = 'toname#mail.com';
mail.title = '闭包式 单件模式发送';
mail.content = '发送内容';

mail.send();
登入後複製

以上就是本章的全部內容,更多相關教學請訪問JavaScript影片教學

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板