国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

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

2024-05-06 16:13:06
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了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();


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 霍山县| 鄂尔多斯市| 婺源县| 静宁县| 葫芦岛市| 嘉禾县| 阿坝| 拜泉县| 遂昌县| 施秉县| 蓬溪县| 桑日县| 福建省| 淮南市| 敖汉旗| 金平| 巴南区| 梅州市| 宜春市| 鸡西市| 汽车| 夏邑县| 渭源县| 磴口县| 涟源市| 隆化县| 岳阳市| 大新县| 轮台县| 白城市| 阜城县| 霍城县| 广南县| 浠水县| 婺源县| 从江县| 双柏县| 绵阳市| 章丘市| 章丘市| 龙口市|