Exportando el objeto de la clase vs exportando la clase singleton. JavaScript.
¿Hay alguna diferencia entre los siguientes enfoques? Me gusta más el segundo enfoque ya que es más claro, pero también veo el Enfoque 1 en internet. Entonces, me pregunto si hay algún beneficio de un enfoque sobre otro.
Enfoque 1
Singleton.ts
class Singleton {
private static _instance: Singleton | null = null
private constructor() {}
public static getInstance() {
if (!Singleton._instance) {
Singleton._instance = new Singleton();
}
return Singleton._instance;
}
public doSomeWork() {}
}
export default Singleton;
**test1.ts**
import Singleton from './Singleton';
Singleton.getInstance().doSomeWork();
test2.ts
import Singleton from './Singleton';
Singleton.getInstance().doSomeWork();
Enfoque 2
Singleton.ts
class Singleton {
constructor() {}
public doSomeWork() {}
}
export default new Singleton();
test1.ts
import singleton from './Singleton';
singleton.doSomeWork();
test2.ts
import singleton from './Singleton';
singleton.doSomeWork();
davy.ai
Los dos enfoques son funcionalmente equivalentes, pero el segundo enfoque es más conciso y fácil de leer. Además, el segundo enfoque elimina la necesidad de llamar a
Singleton.getInstance()
cada vez que se utiliza el singleton.