《JavaScript設計模式》讀書筆記:singleton模式

來源:互聯網
上載者:User

singleton模式在三種模式分類中屬於建立型模式。在《設計模式》一書中,這樣描述其意圖:保證一個類僅有一個執行個體,並提供一個訪問它的全域訪問點。

在《JavaScript設計模式》中,singleton有了一個更廣義的定義:singleton是一個用來劃分命名空間並將一批相關方法和屬性群組織在一起的對象,如果它可以被執行個體化,那麼它只能被執行個體化一次。這段話中,指出了singleton模式在JavaScript中的另一用途:劃分命名空間。

1. 簡單singleton

在JavaScript中,最簡單的singleton就是一個對象字面量:

var Singleton = {attrbute1 : true,attribute2 : 10,function1 : function() {},function2 : function() {}};
使用圓點運算子訪問該對象的屬性或方法:
Singleton.attribute1 = false;var total = Singleton.attribute2 + 5;var result = Singleton.method1();

2. 劃分命名空間:

屬性或者方法聲明在singleton內部時,這些成員便不再是全域性的了,而是被包在了這個對象內部,需要使用對象名去訪問。這樣就避免了全域變數汙染,避免了自己的函數或屬性在應用的其他部分被覆蓋或者改寫。

3. 擁有私人成員的singleton

若想為singleton建立私人成員就必須藉助於閉包。例:

 1 MyNamespace = {};
 2 
 3 MyNamespace.Singleton = (function() {
 4     //private members
 5     var privateAttribute1 = false;
 6     var privateAttribute2 = [1, 2, 3];
 7 
 8     function privateMethod1() {
 9         //do something
10     }
11 
12     function privateMethod2() {
13         console.log('privateMethod2');
14         //do other something
15     }
16     
17     return {
18         //public members
19         publicAttribute1 : true,
20         publicAttribute2 : 10,
21         
22         publicMethod1 : function() {
23             //call private method
24             privateMethod2();
25         },
26 
27         publicMethod2 : function() {
28         
29         }
30     };
31 })();
32 
33 
34 MyNamespace.Singleton.publicMethod1();

 

 

singleton模式的優點:

singleton模式的主要好處在於它對代碼的組織作用。把相關方法和屬性群組織在一個不會被多次執行個體化的singleton中,可以使代碼的調用和維護變得更輕鬆。把方法包裹在singleton中,可以防止它們被其他程式員誤改,還可以防止全域命名空間被一大堆變數汙染。

singleton模式的缺點:

由於singleton模式提供的是一種單點訪問,所以它有可能導致模組間的強耦合,不利於單元測試。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.