iT邦幫忙

DAY 10
1

Javascript面面觀系列 第 10

Javascript面面觀:核心篇《模式-singleton》

  • 分享至 

  • xImage
  •  

Singleton在GOF設計模式中算是基本的基本,因為結構簡單,很容易就明白,也很容易寫出來。其實用Javascript做Singleton甚至比其他語言更簡單。
結構
用Javascript做出Singleton,其實只要透過匿名函數,透過函數的執行產生所需要的物件,透過適當地安排,就可以讓這個物件只能透過「工廠函數」取得,而且在之後的程式都不會變化。

下面是一個簡單的範例:

 (function(){
     var ajax = new XMLHttpRequest();
     window.getAjax = function() {return ajax;};
 })();

結束。

這麼簡單?長得也不像嘛?但是仔細考慮一下,匿名函數內的ajax變數在匿名函數執行時就產生了,只能透過getAjax()函數取得,每次返回的都是同一個物件實體,而且也沒有其他方法產生另一個物件實體(其實有啦,但是如果XMLHttpRequest是在匿名函數內定義的話,從外部也是無法存取的,請想像一下),這就是Singleton了。

應用
需要用Singleton的時機應該不用多說了。Singleton很簡單,所以在初學者應用中常見的問題反而是:不要在不需要的時候使用它。


上一篇
Javascript面面觀:核心篇《模式-fluent interface(cascade)》
下一篇
Javascript面面觀:核心篇《模式-decorator》
系列文
Javascript面面觀30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言