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

JavaScript設(shè)計(jì)模式之單件模式介紹

 更新時(shí)間:2014年12月28日 10:26:29   投稿:junjie  
這篇文章主要介紹了JavaScript設(shè)計(jì)模式之單件模式介紹,單件模式,就是靜態(tài)化的訪(fǎng)問(wèn)中已經(jīng)實(shí)例化的對(duì)象,這個(gè)對(duì)象只能通過(guò)一個(gè)唯一的入口訪(fǎng)問(wèn),已經(jīng)實(shí)例或待實(shí)例化的對(duì)象,需要的朋友可以參考下

單件模式說(shuō)明

1. 說(shuō)明:?jiǎn)渭J?,就是靜態(tài)化的訪(fǎng)問(wèn)中已經(jīng)實(shí)例化的對(duì)象,這個(gè)對(duì)象只能通過(guò)一個(gè)唯一的入口訪(fǎng)問(wèn),已經(jīng)實(shí)例或待實(shí)例化的對(duì)象;面向?qū)ο笳Z(yǔ)言如Java, .Net C#這樣的服務(wù)端動(dòng)態(tài)語(yǔ)言里,能保證類(lèi)的操作有順的進(jìn)行,避免并行操作使數(shù)據(jù)發(fā)生混亂的情況;

2. 單件模式的好處:

1>. 減少 new 的操作,以免加快內(nèi)存頻繁操作,占用內(nèi)存;
2>. 盡量減少大系統(tǒng)的對(duì)象的開(kāi)銷(xiāo);
3>. 就是上面說(shuō)的,可以保障某些類(lèi)型的操作有順序準(zhǔn)確的操作,以免并行處理引起的數(shù)據(jù)異常現(xiàn)象;

當(dāng)然上面說(shuō)的好處,都是說(shuō)服務(wù)端語(yǔ)言里的。在javascript這種弱類(lèi)型的語(yǔ)言,不要糾結(jié)那么多,因?yàn)槟_本都在自己的客戶(hù)端這邊操作的,沒(méi)有什么操作沖突的問(wèn)題;相當(dāng)于整個(gè)服務(wù)器就你一個(gè)人在用,不用擔(dān)心,你的數(shù)據(jù)會(huì)被其他什么人操作的問(wèn)題;

實(shí)例源碼


復(fù)制代碼 代碼如下:

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;
    }
}

使用方法:


復(fù)制代碼 代碼如下:

var mail = Singleton.getInstance();
mail.to = 'toname#mail.com';
mail.title = '單件模式發(fā)送';
mail.content = '發(fā)送內(nèi)容';

mail.send();

當(dāng)像有些全局框架,比如像 DWZ 這樣的富UI框架,創(chuàng)建一個(gè) 全局 的Singleton 后,Singleton.instance 都有值了,就不必要再創(chuàng)建;

當(dāng)然如果是寫(xiě)成這樣的,會(huì)比較明了,跟服務(wù)端語(yǔ)言一置:


復(fù)制代碼 代碼如下:

Singleton.getInstance().to = 'toname#mail.com';
Singleton.getInstance().title = '單件模式發(fā)送';
Singleton.getInstance().content = '發(fā)送內(nèi)容';

Singleton.getInstance().send();

其他實(shí)說(shuō)明

單件模式在什么的地方,比較有用呢?比如有一個(gè)操作服務(wù)器上一個(gè)統(tǒng)一的配置文件時(shí),比如像大規(guī)模并發(fā)操作還需要注意先來(lái)后到的情況時(shí),比如交易所的操作過(guò)程記錄等,都可以用 單件模式 來(lái)操作;

另外:?jiǎn)渭J降姆绞?

1. 上頭那種叫懶惰方式

2. 餓棍方式:

復(fù)制代碼 代碼如下:

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;
   }
}

使用方法一樣;

使用閉包方式創(chuàng)建單件模式,隱藏 instance 對(duì)象

1. 代碼:

復(fù)制代碼 代碼如下:

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. 使用方法:

復(fù)制代碼 代碼如下:

//一樣用法
var mail = Singleton.getInstance();
mail.to = 'toname#mail.com';
mail.title = '閉包式 單件模式發(fā)送';
mail.content = '發(fā)送內(nèi)容';

mail.send();


相關(guān)文章

最新評(píng)論