Patrones de Diseño en JavaScript
Patrones de Diseño en JavaScript
En la actualidad es muy común que como desarrolladores nos preguntemos cuál es una de las
mejores formas de implementar un flujo de trabajo utilizando JavaScript, realmente no existe
una respuesta concreta a esta pregunta, ya que cada aplicación tiene sus propias necesidades
individuales por lo que es necesario pensar cuando consideramos que un patrón nos pueda
ofrecer una solución ideal, teniendo lo anterior en cuenta realicé la siguiente pregunta.
Se podría resumir de una manera más sencilla como “una manera de resolver una
problemática”, un patrón de diseño tiene que cumplir por lo menos con los siguientes
objetivos.
1.-Estandarizar el lenguaje entre desarrolladores.
2.-Evitar perder tiempo en soluciones a problemas ya resueltos o conocidos.
3.-Crear código que se pueda reutilizar.
Manos a la obra
Patrón Object Literals
Tal cual su nombre lo dice este patrón se conforma con la creación de un objeto que
prácticamente es un JSON. Una de las bondades de este patrón es que nos permite escribir el
código de una manera organizada y no se corrompe el scope(alcance) global con nombres
innecesarios, lo cual es una muy buena práctica sobre todo para los proyectos muy grandes.
Cabe mencionar que el patrón Object Literals es la base para el siguiente patrón, ya que lo
utilizaremos para el manejo de la lógica.
Patrón Module
Para poder comprender este patrón es necesario entender el siguiente concepto de esta
función.
Hasta este momento podemos tener acceso a lo que retorne el modulo anónimo.
Con anterioridad se habló de “privacidad” dentro de este patrón, para poder mostrar este
concepto funcionando analizaremos el siguiente ejemplo.
Ejemplo del patrón module Fig-3
Como se muestra en el ejemplo generamos un módulo, el cual nos permite realizar una suma,
sin embargo, a un que simplevista podemos ver un código común y corriente, lo interesante
es que ya se está manejando el concepto de “privacidad”, y no podemos tener acceso al
método privateFunction, pero si al método suma. Esto se debe a que solo estamos
retornando todo lo que contenga la variable publicFunction y lo que no se encuentre dentro
de ésta será privado y solo se tendrá acceso dentro del scope de nuestro modulo :).
La pregunta que te puedes estar realizando hasta este momento es ¿Cómo consulto la
respuesta de privateFunction?, para esto tendríamos que generar una función pública que
obtenga el resultado que lanza “privateFunction”, como se muestra a continuación.
Ejemplo del patrón module consultando la respuesta de privateFunction Fig-4
Podemos ver que este patrón nos permite manipular el concepto de “privacidad”, el cual
resulta muy útil cuando no queremos que toda la funcionalidad del aplicativo este expuesta.
Existen diversas maneras de poder escribir el código del patrón module, algunas de ellas se
muestran en el siguiente ejemplo.
Maneras de escribir el patrón module Fig-5
Nota : en este patrón es común ver que todos los métodos privados cuentan con el
prefijo _. Tomando en cuenta la recomendación anterior nuestro código de ejemplo quedaría
de la manera siguiente.
Aplicando la convención _ Fig-6
Patrón Prototype
Este patrón de diseño tiene como finalidad crear nuevos objetos duplicándolos, clonando una
instancia creada previamente, en resumen se podría decir que el uso de este patrón es lo más
cercano a POO (Programación Orientada a Objetos), con los nuevas funciones de EmacScript
2016 esto puede armarce usando class, extends, etc.
Otra de las características es que todos los objetos en JavaScript cuentan con la
propiedad proto, lo cual facilita crear nuevas funciones para clases ya existentes,
prácticamente este patrón es la onda jejeje.
Para poder comprender mejor este patrón vamos a crear un ejemplo usando prototype y otro
utilizando las nuevas funciones de emacScritpt.
Conclusión
Los patrones de diseño son un camino para solucionar una problemática de maneras
distintas, pero siempre obtendremos una solución que se podrá adaptar a nuestro aplicativo.
Se podría decir que para construir nuestro aplicativo no existe un camino correcto, pero sí un
patrón que nos facilite acercarnos al camino que buscamos.