Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Patrones 2

Contenidos
  1. Singleton
  2. Factory
  3. Decorator
  4. Observer

Singleton

El patrón de diseño Singleton es un patrón que garantiza que solo exista una instancia de una clase en particular en todo el ciclo de vida de una aplicación. En otras palabras, este patrón garantiza que solo haya una única instancia de una clase disponible en todo el sistema.

En JavaScript, se puede implementar Singleton utilizando una clase y una variable estática para almacenar la única instancia de la clase.

La clase debe tener un constructor privado que no permita la creación de nuevas instancias de la clase desde fuera de la clase. En lugar de crear nuevas instancias de la clase, se debe utilizar un método estático de la clase para obtener la única instancia disponible.

independientemente de cuantas veces creamos una nueva instancia de la clase, esta siempre será la primera que fue creada.

Esto es ideal para crear a través de clases objetos complejos de configuración general para una aplicación, Servicios que necesitan representarse a través de una instancia única como Cachés, datos globales, etc.

Factory

Generalizar una clase para ser utilizada con diferentes propiedades según una condición.

El patrón de diseño Factory es un patrón creacional que se utiliza para crear objetos sin especificar la clase exacta del objeto que se creará. El patrón encapsula la creación y proporciona una interfaz para crear objetos de diferentes tipos sin exponer la lógica de creación.

La función createUserFactory utiliza un objeto llamado userTypes que contiene los diferentes tipos de usuarios que se pueden crear. El tipo de usuario que se va a crear se pasa como un parámetro y se utiliza para buscar la clase de usuario correspondiente en el objeto userTypes.

Si te fijas, esto permite hacer cambios internos de lógica incluso hasta cambiar los tipos de clases y quien use la Factory podrá seguir utilizando el código sin problemas.

Decorator

Un decorador es una función que toma una función, método o clase como entrada y devuelve una nueva función o clase con funcionalidades adicionales.

Veremos un ejemplo de código para decorar la función printNumbersWithArrows con la funcionalidad adicional de imprimir un mensaje en la terminal antes de que se ejecute la función original. Esto se logra asignando la función decorada devuelta por logMethodCallDecorator, nuestro “decorador”, a una nueva variable llamada printNumbersDecorated. Luego, se puede usar printNumbersDecorated para lograr la funcionalidad adicional proporcionada por el decorador y a la vez ejecutar la función deseada.

En el ecosistema de JavaScript, los decoradores son ampliamente utilizados en bibliotecas y marcos de trabajo de JavaScript para agregar funcionalidades adicionales a clases, métodos y funciones.

Los decoradores se pueden utilizar para implementar características como la validación de entrada de funciones, la autenticación y autorización de usuarios, la generación automática de documentación, la medición del rendimiento, la caché y muchas otras funcionalidades.

Los decoradores también se pueden combinar para proporcionar funcionalidades más complejas y útiles por lo que puede hacer que el código sea más fácil de leer, mantener y extender.

Observer