Patrón Singleton en JavaScript: Implementación y Uso Práctico

Clase 3 de 26Curso de Node.js Avanzado

Resumen

El patrón Singleton es uno de los conceptos fundamentales en JavaScript que permite mantener únicamente una instancia de un objeto durante toda la ejecución de una aplicación. Su uso asegura que, sin importar cuántas veces tratemos de instanciarlo, siempre se devuelva el mismo objeto, brindando así consistencia en su uso.

¿Qué es el patrón Singleton en JavaScript?

En esencia, el patrón Singleton asegura que existe una única instancia de un objeto. Cada vez que intentas crear uno nuevo, simplemente obtienes el objeto ya creado. Este principio simplifica la gestión de recursos compartidos como configuraciones globales o manejadores únicos.

¿Cómo implementarlo de forma correcta?

La manera adecuada de implementar este patrón en JavaScript involucra una comprobación en el constructor:

class Singleton {
  constructor() {
    if (Singleton.instance) {
      return Singleton.instance;
    }
    this.nombre = '';
    Singleton.instance = this;
    return Singleton.instance;
  }

  setName(nombre) {
    this.nombre = nombre;
  }
}

const singleton1 = new Singleton();
const singleton2 = new Singleton();

console.log(singleton1 === singleton2); // true

Es importante recordar que este patrón presenta la condición lógica de verificar si la instancia ya existe: si existe se devuelve esta directamente, si no, se crea una nueva.

¿Qué es el patrón Factory en JavaScript?

El patrón Factory facilita la creación de múltiples objetos del mismo tipo mediante un método o función común, permitiendo flexibilidad y simplicidad en tu código. Es altamente utilizado en bibliotecas y herramientas modernas.

¿Cómo se implementa el patrón Factory?

La implementación implica crear una clase responsable de instanciar nuevos objetos:

class Pet {
  constructor(name) {
    this.name = name;
  }
}

class PetFactory {
  createPet(name) {
    return new Pet(name);
  }
}

const factory = new PetFactory();
const mascota1 = factory.createPet('Firulais');
const mascota2 = factory.createPet('Max');

console.log(mascota1 === mascota2); // false

Acá observamos cómo la Factory ayuda en la creación eficiente de objetos similares pero distintos entre sí.

¿Qué diferencia existe entre Singleton y Factory?

Mientras Singleton mantiene una sola instancia del objeto creado, Factory permite generar tantas instancias diferentes del mismo tipo como necesitemos. Son patrones complementarios usados según la situación y necesidad del diseño:

  • Singleton asegura unicidad en la instancia de objetos.
  • Factory genera nuevas instancias según requerimientos específicos, manteniendo flexibilidad y personalización.

Te invitamos a que dejes tus comentarios y dudas sobre estos patrones en JavaScript; tu participación es valiosa para seguir ahondando en temas relevantes para tu desarrollo profesional.