Diagrama de Clases del Patrón Singleton en JavaScript
Clase 4 de 27 • Curso de Patrones de Diseño en JavaScript
Contenido del curso
- 7

Patrones de Diseño: Introducción al Patrón Factory
08:29 - 8

Patrón Factory: Implementación y Detalles Esenciales
06:47 - 9

Implementación del Patrón Factory Method en JavaScript
16:04 - 10

Comparación del Patrón Factory en JavaScript y TypeScript
04:46 - 11

Patrón Factory: Ventajas y Desventajas en Desarrollo de Software
10:24
- 12

Patrón Abstract Factory: Estrategia para Múltiples Fábricas de Coches
03:39 - 13

Patrones de Diseño: Abstract Factory en Producción de Coches
04:21 - 14

Implementación del patrón Abstract Factory en JavaScript
10:46 - 15

Diferencias entre JavaScript y TypeScript en el patrón Abstract Factory
03:33 - 16

Patrón Abstract Factory: Ventajas y Desventajas
06:00
- 17

Patrón Builder: Diseño y Aplicación en Producción de Vehículos
07:40 - 18

Patrón Builder: Análisis de Diagrama y Clases Relacionadas
04:46 - 19

Implementación del Patrón Builder en Producción de Coches
27:39 - 20

Comparación del Patrón Builder en JavaScript vs TypeScript
03:38 - 21

Patrón Builder: Ventajas, Desventajas y Aplicaciones Prácticas
07:00
¿Qué es el diagrama de clases del patrón Singleton?
El patrón Singleton es un diseño en programación orientada a objetos que asegura que una clase solo tenga una instancia y proporciona un punto de acceso global. El diagrama de clases de Singleton nos presenta una representación gráfica que resume la estructura y comportamiento de este patrón. Dos aspectos destacados del diagrama son cruciales para su comprensión:
-
Constructor privado: El constructor de la clase se establece como privado. Esto se representa con un símbolo de menos (-), indicando que no puede ser accesible fuera de la propia clase. Este paso garantiza que no se pueden crear nuevas instancias de la clase utilizando el operador
new. -
Método estático getInstance(): Se crea un método estático que internamente llama al constructor privado. Este método es el que guarda la instancia en una variable estática y devuelve la misma instancia cada vez que se solicita.
¿Cómo se implementa el patrón Singleton en código?
La implementación en código del patrón Singleton suele seguir un proceso conocido y eficiente, que permite ahorrar recursos y asegurar la invariabilidad de la instancia. La traducción del diagrama a JavaScript ofrece una visión clara de cómo establecer el patrón, incluso cuando este lenguaje no soporta modificadores de acceso como private. El código es el siguiente:
class Singleton {
constructor(version) {
this.version = version;
}
static getInstance(version) {
if (!Singleton.instance) {
Singleton.instance = new Singleton(version);
}
return Singleton.instance;
}
}
// Prueba del patrón Singleton
const singleton1 = Singleton.getInstance("versión1");
const singleton2 = Singleton.getInstance("versión2");
console.log(singleton1 === singleton2); // Output: true
¿Cómo se realiza la verificación de instancia?
El método estático getInstance() verifica si ya existe una instancia de la clase Singleton. Si no existe, crea una nueva instancia, la almacena, y la devuelve. Si ya existe, simplemente retorna la instancia existente:
- Verificación: Se comprueba si
Singleton.instanceestá definida. Si no lo está, se crea una nueva instancia. - Asignación: La nueva instancia se asigna a
Singleton.instance. - Retorno: Se devuelve siempre
Singleton.instance.
Este proceso garantiza que solo haya una única instancia activa a lo largo de toda la aplicación.
¿Cuál es el resultado al probar el patrón Singleton?
Al correr una prueba con varias llamadas a getInstance() y diferentes versiones, como se hace en el ejemplo anterior con singleton1 y singleton2, el resultado es crucial para validar el patrón. El código devuelve true, lo que significa que ambas variables apuntan a la misma instancia, cumpliendo así con el objetivo del patrón Singleton. A continuación se muestra un fragmento que refleja el testeo y su interpretación:
// Verificación adicional
const singleton3 = Singleton.getInstance("versión3");
console.log(singleton1 === singleton3); // Output: true
La prueba establece que no importa con qué versión se invoca el método getInstance(), siempre se retorna la misma instancia única. Esto demuestra la efectividad y fiabilidad del patrón Singleton. Como desarrollador, ahora tienes una herramienta poderosa para controlar y gestionar los estados globales en tus aplicaciones.