In JavaScript esistono diversi modi per implementare il Singleton pattern. Di seguito ne riportiamo due.
Funzione che restituisce un oggetto
'use strict';
const Singleton = function() {
const privateMember = 'privato';
const showPrivate = () => {
console.log(privateMember);
};
return {
publicMethod() {
showPrivate();
},
publicMember: 'pubblico'
};
};
Esempio d'uso:
Singleton().publicMethod(); // 'privato'
Funzione che restituisce un'istanza privata
'use strict';
const Singleton = (function() {
let instance = null;
const init = function() {
return {
publicMethod() {
console.log('Hello World');
},
publicProperty: 'test'
};
};
return {
getInstance() {
if (!instance) {
instance = init();
}
return instance;
}
};
})();
Esempio d'uso:
Singleton.getInstance().publicMethod(); // 'Hello World'