Je vois des modèles qui utilisent un modèle de singleton avec des classes ES6 et je me demande pourquoi je les utiliserais plutôt que de simplement instancier la classe au bas du fichier et d'exporter l'instance. Y a-t-il une sorte d'inconvénient à faire cela ? Par exemple :
Instance d'exportation ES6 :
import Constants from '../constants';
class _API {
constructor() {
this.url = Constants.API_URL;
}
getCities() {
return fetch(this.url, { method: 'get' })
.then(response => response.json());
}
}
const API = new _API();
export default API;
Utilisation :
import API from './services/api-service'
Quelle est la différence entre l'utilisation du modèle Singleton suivant ? Y a-t-il des raisons d'utiliser l'un plutôt que l'autre ? Je suis en fait plus curieux de savoir si le premier exemple que j'ai donné peut présenter des problèmes dont je ne suis pas conscient.
Modèle Singleton :
import Constants from '../constants';
let instance = null;
class API {
constructor() {
if(!instance){
instance = this;
}
this.url = Constants.API_URL;
return instance;
}
getCities() {
return fetch(this.url, { method: 'get' })
.then(response => response.json());
}
}
export default API;
Utilisation :
import API from './services/api-service';
let api = new API()