Contenido del curso
Singleton
Factory
Abstract Factory
- 12

Qué es el patrón Abstract Factory
03:39 min - 13

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

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

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

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

Patrón Builder para crear objetos complejos
07:39 min - 18

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

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

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

Patrón Builder: Ventajas, Desventajas y Aplicaciones Prácticas
07:00 min
Prototype
- 22

Patrón Prototype: Clonación de Objetos en Diseño de Software
03:36 min - 23

Diagrama UML del patrón Prototype explicado
01:55 min - 24

Implementación del Patrón Prototype en JavaScript
07:14 min - 25

Comparación de Prototype en JavaScript y TypeScript
06:08 min - 26

Patrón Prototype: Ventajas y Desafíos en Diseño de Software
05:43 min
Conclusiones
Patrón Singleton: una sola instancia
Resumen
El patrón Singleton resuelve un problema muy concreto en programación orientada a objetos: garantizar que una clase tenga una única instancia accesible desde cualquier parte de tu aplicación. Si trabajas con recursos compartidos, configuraciones globales o manejo de estado, este patrón te da una estrategia clara para evitar duplicaciones innecesarias.
¿Qué es el patrón Singleton y para qué sirve?
Singleton es uno de los patrones de diseño más conocidos y se enseña con frecuencia en cursos de POO. Su definición es simple: asegura que no se pueda crear más de una instancia de una clase y provee un único punto global de acceso a esa instancia [0:11].
¿Qué hace exactamente un Singleton? Crea una sola instancia de una clase y la comparte en toda la aplicación, evitando que se generen copias mediante el operador
new.
Las razones para usarlo van desde la optimización de recursos hasta el manejo de objetos que no deben variar entre módulos. Eso sí, conviene saber que Singleton también arrastra fama de antipatrón en ciertos contextos, algo que se aborda más adelante en el curso [0:51].
¿Qué problema resuelve Singleton en una aplicación?
Durante el desarrollo de una aplicación aparecen dos situaciones recurrentes que justifican usar este patrón [1:09]:
- Necesitas asegurar el acceso a un recurso compartido desde diferentes partes de la aplicación. Si has usado bibliotecas de manejo de estado, la idea te resultará familiar.
- Necesitas que la modificación de ese recurso compartido ocurra en un solo punto de acceso, normalmente un método específico de la clase.
El primer punto te dice: un solo objeto compartido en toda la aplicación. El segundo añade: ese objeto debe exponer un método único para modificar su estado interno. Así evitas inconsistencias y mantienes la lógica centralizada.
¿Cómo se implementa el patrón Singleton paso a paso?
La solución que propone Singleton se apoya en tres ideas técnicas que trabajan juntas: un constructor privado, un método estático que actúa como constructor público y una variable estática que guarda la instancia [1:53].
Hacer privado el constructor de la clase
En POO, el método constructor inicializa los atributos de cada instancia (nombre, edad, apellido, lo que la clase requiera). Normalmente es público, lo que permite usar el operador new para crear instancias libremente.
Singleton invierte esa idea: vuelve privado el constructor. Así nadie puede llamar a new desde fuera de la clase y crear instancias paralelas.
¿Por qué se hace privado el constructor en Singleton? Para impedir que el operador
newse use desde fuera de la clase. De esta forma, la creación de la instancia queda controlada exclusivamente por la propia clase.
Crear un método estático que actúe como constructor
Si el constructor es privado, necesitas otra puerta de entrada. Aquí entra un método estático, normalmente llamado getInstance o createInstance, que tras bambalinas llama al constructor real [2:46].
Los elementos estáticos pertenecen a la clase, no a las instancias. Eso significa que puedes invocar el método usando el nombre de la clase directamente, sin necesidad de tener un objeto previo. Es la forma natural de exponer una fábrica controlada de instancias.
Guardar la instancia en una variable estática privada
La instancia creada se almacena en una variable estática y privada que funciona como caché [3:24]. Esto cambia el comportamiento del método de creación:
- La primera vez que se llama, el método crea la instancia y la guarda en la variable estática.
- Las siguientes llamadas no crean nada nuevo. Devuelven el valor que ya está en la variable.
- El resultado es siempre la misma referencia, en cualquier parte de la aplicación.
¿Qué función cumple la variable estática en Singleton? Actúa como caché. Guarda la única instancia creada y la devuelve en cada nueva petición, evitando que se construyan copias.
¿Dónde encaja Singleton en el desarrollo real?
Más allá de la POO clásica, esta idea aparece en muchas bibliotecas, frameworks y módulos que probablemente ya has usado [0:25]. Cada vez que un módulo te entrega siempre el mismo objeto de configuración, conexión o estado, hay un Singleton operando por debajo.
El siguiente paso es revisar el diagrama de clases del patrón y ver una representación en código que muestre cómo conectar el constructor privado, el método estático y la variable de caché. ¿Has identificado en tus proyectos algún recurso que merezca ser un Singleton? Cuéntalo en los comentarios.