Skip to content

Instantly share code, notes, and snippets.

@you-think-you-are-special
Created February 18, 2015 10:52
Show Gist options
  • Save you-think-you-are-special/e4a89de3ae347b1d4d76 to your computer and use it in GitHub Desktop.
Save you-think-you-are-special/e4a89de3ae347b1d4d76 to your computer and use it in GitHub Desktop.
ES6 Singleton example. Use: import Singleton from 'Singleton'; let instance = Singleton.instance;
'use strict';
/**
* Created by Alexander Litvinov
* Email: [email protected]
* May be freely distributed under the MIT license
*/
let singleton = Symbol();
let singletonEnforcer = Symbol();
class Singleton {
/**
* @param enforcer
*/
constructor(enforcer) {
if (enforcer !== singletonEnforcer) {
throw "Cannot construct singleton"
}
}
/**
* @returns Singleton
*/
static get instance() {
if (!this[singleton]) {
this[singleton] = new Singleton(singletonEnforcer);
}
return this[singleton];
}
}
export default Singleton;
@milankarunarathne
Copy link

@StevenLangbroek export default new MyClass() pattern is using in ReactJS dispacher which is a single component for a ReactJS app. I think, you are correct about it.
Refer: https://gist.github.com/milankarunarathne/c565aa5970987aeca88b

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment