No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Singleton 101

3/27
Recursos

Aportes 4

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

Hola comunidad, dejo mis anotaciones de la clase! 💚

¿De que se trata singleton?

En un patron que nos permite asegurarnos que no se pueda crear mas de una instancia de un objeto.

Con esto aseguramos un único punto global de acceso a la instancia.

Este también tiene elementos por los que podría ser conocido como un anti-patrón.

¿A que problemáticas podría dar solución?

  • Cuando queremos asegurar el acceso a un recurso compartido en diferentes partes de la app.

    Suena similar a lo que hace una Biblioteca de Manejo de Estados (Como Vuex, Redux, o NgRx)

  • Cuando queremos que la modificación al recurso compartido se lleve a cabo en un solo punto de acceso.

    Un ejemplo para ello seria crear un método en la clase, donde se pueda modificar el estado interno de ese único objeto.

Solución

  • El patron sugiere hacer privado el constructor de la clase para evitar hacer uso del operador new().
  • Crear un método estático que actué como “constructor” y que tras bambalina llame al constructor privado, para crear un objeto que estará guardado en una variable estática que funcionara como caché.

Cosa curiosa, en los cursos de backend por allá en los años del cristo; uno puede hacer singleton simplemente haciendo un return en los lenguaje que usan refs en su Compilador/Interprete

***SINGLETON*** Patron que asegura una unica instancia a un objeto garantizando un punto global de acceso. - Optimizacion. Recursos compartidos. > Asegura que la modificaciones de software se haga desde un unico punto de acceso - Constructor (C) operador new(). Solucion crear un metodo estatico que actua como C este llamara a C privado que creara y guardara un objeto en una variable estatica ("cache")

Hasta ahora no he salido de JavaScript/TypeScript… sería interesante probar estos patrones en lenguajes basados en clases y no en prototipos.