Desarrollo
CiberseguridadDesarrolloFotografíaLinkedin
  • 🌎Hello World
  • 🧔About me
  • Proyectos
    • 🛒Sistemas Supermercado
    • 🛒SAU Supermercado
    • App y Web Gestoría Online
    • Webs en Wordpress
    • Marketing Funnel
    • Cartelería digital
    • Gestión del Gas Butano
  • El anillo único
  • Gobierno del dato
  • Librería
  • Tienda en Shopify
  • Conversión Base de Datos
  • Web Circuito de Carreras
  • CONOCIMIENTOS
    • Patrones de Diseño
      • Patrón de fábrica
      • Patrón Singleton
    • ¿Qué me hubiera gustado saber antes como Desarrollador?
      • Compilación
      • Deuda técnica
      • Refactorización del Código
  • Apache Guacamole
  • Artículos
    • Scripts de compilación: el código invisible pero esencial
    • La deuda técnica: el costo oculto del desarrollo
Con tecnología de GitBook
En esta página
  • ¿Cómo funciona?
  • Ejemplo de uso
  • Ventajas
  • Desventajas
  • Ejemplo
  • Explicación
  • Conclusión
  1. CONOCIMIENTOS
  2. Patrones de Diseño

Patrón Singleton

El Patrón Singleton es un patrón de diseño creacional que asegura que una clase tenga una única instancia y proporciona un punto global de acceso a esa instancia.

Este patrón se utiliza cuando es necesario asegurarse de que una clase tenga una sola instancia en toda la aplicación, y además, se necesita proporcionar un acceso global a esa instancia.

¿Cómo funciona?

El patrón Singleton funciona garantizando que una clase tenga solo una instancia a lo largo del ciclo de vida de la aplicación. En lugar de permitir que múltiples instancias sean creadas, el Singleton controla la creación de la instancia y devuelve la misma instancia cada vez que se solicita.

El patrón define un método estático que crea la instancia si no existe y la devuelve. Si ya existe, simplemente se devuelve la instancia ya creada, evitando que se creen múltiples objetos.

Ejemplo de uso

Un ejemplo común de uso del patrón Singleton es en el manejo de configuraciones globales de la aplicación, donde no se necesita tener múltiples instancias de la clase de configuración. De esta manera, se garantiza que la configuración sea coherente en toda la aplicación.

Ventajas

  • Controla el acceso a la única instancia: Se asegura de que no haya más de una instancia de la clase.

  • Reduce la sobrecarga de memoria: No se crean múltiples objetos innecesarios.

  • Proporciona acceso global a la instancia: La misma instancia está disponible a través de toda la aplicación.

  • Fácil de implementar: Es un patrón relativamente fácil de implementar y usar.

Desventajas

  • Difícil de probar: Debido a su naturaleza global, puede ser difícil realizar pruebas unitarias en una clase Singleton.

  • Restricción en la flexibilidad: Puede ser un inconveniente si se desea cambiar la lógica de instanciación en el futuro, ya que esta lógica está encapsulada dentro de la clase Singleton.

  • Puede ser propenso a ser mal utilizado: Si se usa de forma incorrecta, puede llevar a una mala estructura en el código.

Ejemplo

Aquí tienes un ejemplo de cómo se implementa el patrón Singleton en JavaScript:

// Clase Singleton
class Singleton {
    constructor() {
        if (Singleton.instance) {  // Comprobamos si la instancia ya existe
            return Singleton.instance;  // Si existe, devolvemos la instancia
        }

        // Si no existe, inicializamos la instancia
        this.timestamp = new Date();
        Singleton.instance = this;  // Guardamos la instancia
    }

    getTimestamp() {
        return this.timestamp;
    }
}

// Usamos el Singleton
const instance1 = new Singleton();
console.log(instance1.getTimestamp()); // Muestra el timestamp de la primera instancia

const instance2 = new Singleton();
console.log(instance2.getTimestamp()); // Muestra el mismo timestamp, ya que es la misma instancia

// Verificamos que ambas instancias son la misma
console.log(instance1 === instance2);  // true, ambas son la misma instancia

Explicación

  1. Clase Singleton: La clase Singleton tiene un constructor que verifica si ya existe una instancia. Si ya existe, devuelve esa instancia en lugar de crear una nueva. Si no existe, crea la instancia y la guarda en Singleton.instance.

  2. Instanciación: Cuando se crea una nueva instancia de Singleton, si ya existe una instancia previa, se devuelve la misma.

  3. Método getTimestamp: Este método devuelve un valor (en este caso, un timestamp) que puede ser usado para demostrar que ambas instancias tienen el mismo valor, ya que es la misma instancia en realidad.

  4. Verificación de la instancia: Se comprueba que instance1 y instance2 sean efectivamente la misma instancia al comparar instance1 === instance2, lo cual devuelve true.

Conclusión

El patrón Singleton es adecuado cuando se necesita una única instancia de una clase a lo largo de toda la aplicación, como en el caso de gestores de configuración, conexiones a bases de datos o registros de logs.

Es un patrón simple y efectivo, pero debe ser utilizado con cuidado para evitar que se convierta en un obstáculo para las pruebas o el mantenimiento del código.

AnteriorPatrón de fábricaSiguiente¿Qué me hubiera gustado saber antes como Desarrollador?

Última actualización hace 2 meses