forked from nnupoor-zz/js_designpatterns
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsingleton.js
34 lines (29 loc) · 837 Bytes
/
singleton.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//Structure
var mySingleton = (function() {
function init(options) {
//some private variables
var x = '1', y = 2, z = 'Abc', pi = Math.PI;
//return public methods(accessing private variables if needed.)
return {
X : x,
getPi : function() {
return pi;
}
}
}
//There must be exactly one instance of a class,
//and it must be accessible to clients from a well-known access point
var instanceOfSingleton;
return {
initialize: function(options) {
//initialize only if not initialized before
if(instanceOfSingleton === undefined) {
instanceOfSingleton = init(options);
}
return instanceOfSingleton;
}
};
})();
var singleton = mySingleton.initialize();
console.log(singleton.X); //'1'
console.log(singleton.getPi());//3.141592653589793