SINGLETON | PATRONES de DISEÑO

SINGLETON | PATRONES de DISEÑO

Patrón Singleton: ¿Qué es y para qué sirve?

Introducción al patrón Singleton

  • Este vídeo está patrocinado por App Cloud, que ofrece servidores con almacenamiento más rápido que cualquier SSD. Se menciona un código promocional para obtener créditos.
  • En este canal se discuten patrones de diseño en software y tecnología, comenzando con el patrón singleton, uno de los más buscados y controvertidos.
  • El enfoque del vídeo es técnico; no se discutirá si el singleton es un patrón o un anti-patrón.

Objetivo del Patrón Singleton

  • El objetivo principal del patrón singleton es asegurar que solo exista una instancia de una clase específica en todo el programa.
  • Se busca evitar la creación de múltiples instancias de la misma clase, garantizando que siempre se utilice la misma instancia.

Accesibilidad Global y Casos de Uso

  • El singleton proporciona accesibilidad global a su única instancia, permitiendo acceso desde cualquier parte del programa.
  • Aunque hay pocos casos donde realmente se recomienda usar este patrón, uno común es gestionar recursos únicos como archivos de logs.

Implementación Técnica del Patrón Singleton

  • Para implementar el singleton, se hace privado el constructor de la clase, evitando así instanciaciones externas.
  • La creación de instancias se maneja a través de una función estática (como getInstance), que controla si ya existe una instancia antes de crearla.

Comprobación y Control sobre Instancias

  • La función estática comprueba si ya existe una instancia; si no existe, crea una nueva. Esto asegura que solo haya una instancia activa en todo momento.

¿Qué es el patrón Singleton y cuáles son sus implicaciones?

Conceptos básicos del Singleton

  • El patrón Singleton se utiliza para garantizar que una clase tenga una única instancia y proporciona un punto de acceso global a esa instancia. La clase debe ser estática para mantener esta instancia.
  • En la función getInstance, se verifica si la instancia ya existe; si no, se crea. Esto asegura que siempre haya una única copia del objeto.
  • El patrón encapsula el proceso de creación de instancias en una función global, eliminando la posibilidad de crear múltiples objetos mediante el constructor de la clase.

Controversias y desventajas del uso del Singleton

  • Aunque el Singleton puede parecer útil, genera controversia porque actúa como una variable global dentro de una clase, lo cual es generalmente desaconsejado en programación.
  • Se menciona una charla sobre "estado global y singletons" donde se discuten los peligros asociados con este patrón, incluyendo su impacto negativo en las pruebas unitarias.

Impacto en las pruebas unitarias

  • Utilizar el patrón Singleton complica innecesariamente las pruebas unitarias, ya que siempre devuelve la misma instancia. Esto dificulta controlar las instancias generadas durante las pruebas.
  • A menudo se requieren soluciones poco elegantes para obtener instancias manipuladas necesarias para realizar pruebas efectivas, lo que podría evitarse sin usar este patrón.

Reflexiones finales sobre el uso del Singleton

  • Se invita a los espectadores a reflexionar sobre si consideran que el Singleton es un antipatrón y a compartir sus experiencias y opiniones al respecto en los comentarios.
Video description

👉🏻 Obtén 7 días de trial y 25$ de crédito en UpCloud 👉🏻 https://upcloud.com/signup/?promo=bettatech El patrón SINGLETON es uno de los más famosos y más utilizados. En éste vídeo vamos a ver cómo funciona éste patrón de diseño! Índice de la serie! 👉🏻 https://www.youtube.com/watch?v=3qTmBcxGlWk The Clean Code Talks - "Global State and Singletons" 👉🏻 https://www.youtube.com/watch?v=-FRm3VPhseI 👾 Redes sociales 👾 ► Twitter: https://twitter.com/bettatech ► Instagram: https://www.instagram.com/betta_tech ► Canal Secundario: https://www.youtube.com/channel/UCIngE8MfiNPKeLTl34P44OQ ► Slack: https://bit.ly/33gaDDM 👨🏼‍🏫 MIS CURSOS 👨🏼‍🏫 👽 Curso de iniciación a la programación con JavaScript: ► https://bit.ly/3kr4bTc 👕 MERCHANDISING DEL CANAL: ► Tienda YouTube: https://www.youtube.com/c/BettaTech/store ► Tienda Teespring: https://teespring.com/stores/bettatech-store ⭐️ AFILIADOS ⭐️ 🎁 7% Descuento en HOSTINGER (Código BETTATECH) ► https://www.hostg.xyz/aff_c?offer_id=357&aff_id=56221 🧠 Autocompletado con IA (Kite) ► https://www.kite.com/get-kite/?utm_medium=referral&utm_source=youtube&utm_campaign=bettatech&utm_content=description-only 🐾 MacPaw (CleanMyMacX): ► https://macpaw.audw.net/c/2523912/94160/1733 🎵 TODA la música es de EpidemicSound: ► https://www.epidemicsound.com/referral/in9amx/ ✉️ CONTACTO PROFESIONAL: ► Respuesta no garantizada: bettatechyt@gmail.com 📚 LIBROS 📚 Design Patterns ► https://amzn.to/39XuQlq Head First Design Patterns ► https://amzn.to/2uq6XUq Refactoring ► https://amzn.to/2SQnf2c Clean Architecture ► https://amzn.to/3bZVonJ Clean Code ► https://amzn.to/32WVKq3 Introduction to Algorithms ► https://amzn.to/34SyVFP Cracking the Coding Interview ► https://amzn.to/2QkdwC6