Los patrones de diseño son importantes, pero lo mas importante es saber en donde son adecuados implementarlos ahí es donde radica realmente su valor agregado. El día de hoy vamos a revisar cómo se implementa el patrón de diseño Singleton en JavaScript.
Singleton se utiliza para asegurarse de que una clase tenga solo una única instancia durante toda la ejecución de un programa, esto quiere decir que no importan cuantas veces se llame esa clase se va a ocupar una única instancia.
Hay diferentes formas de aplicar este patrón de diseño pero el que a continuación vamos a revisar es ocupando un objeto literal. De la siguiente manera.
Acá estamos asignando el resultado de una función anónima que tiene dentro de ella otra función que se llama createInstance(), que es la encargada de generar el objeto y regresar el nuevo objeto. El return de la función anonima genera un clousure llamado getIsntance() Recordemos que los clousure tiene acceso a las variables dentro de la primera función por lo tanto también la pueden modificar, acá se valida si instance es undefined si es así manda a traer createInstance() que ya vimos cual es su funcionamiento y lo asigna a la variable. Por último regresa la variable instancie. Ahora vemos que si ocupamos Singleton.getInstance() varias veces y hacemos una comparación los dos objetos apuntan a la misma instancia y por lo tanto dice que es true.
También se puede hacer de la siguiente manera, por medio del uso de una clases y constructor, primero se valida si ya existe una instancia en caso de que no sea así entonces con this se agrega la propiedad name y por ultimo asignamos this a la instancia pero lo congelamos para que no haya ninguna modificación de la intancia. Como vemos que si creamos una instancia de la clase Singleton dos veces y las comparamos vemos que son iguales, porque la misma naturaleza del patrón de diseño así no los permite.
Singleton es una buena idea implementarlo por ejemplo para clases que hacen la conexión a una base de datos y tener una única instancia que se encarga de eso.
Si este articulo te gusto o aprendiste algo nuevo te agradecería que me siguieras y compartieras mi contenido para que mas personas puedan aprender. Gracias.
Top comments (0)