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