Una disculpa por el error en la traducción transpilar, no lo había notado hasta que un usuario me lo comentó. Gracias por dejar sus comentarios, eso ayuda para mejorar el contenido.
Digamos que lo tienes expuesto en una api recibe un param "language" puede ser python, javascript, go, etc. El controller tiene un servicio: Transpiler. A la hora de setear la estrategia igual necesitas la lógica para definir cual va de acuerdo al param recibido. ¿Que recomendarías? Lo básico, no recomendado por lo poco escalable es hacer if-else, o switch-cases. En java, solía usar una funcción en cada implementación de la interfaz, que comparaba el param recibido y retornaba true or false si hacía match. La lógica es listar todas las estrategias y recorrerlas hasta encontrar la que haga match/retorne true. Y esa es la que se usa.
Por lo que entiendo tienes las estrategias cargadas en una lista/array, haces un recorrido hasta hacer match con alguna y ejecutar la estrategia. Una posible solución a eso es que en lugar de una lista/array utilices un mapa/hashtable/diccionario donde la key sea el param a recibir y el valor su respectiva estrategia, la forma de instanciarlo ya queda de como lo quieran implementar, ya sea que carguen la instancia de cada strategia (posiblemente eso hacen en la lista) o que pasen la referencia de la clase y se haga la instancia al momento de hacer match, pero la idea es que podría quedar algo así: { java: JavasStrategy, go: GoStrategy, ... }
Una disculpa por el error en la traducción transpilar, no lo había notado hasta que un usuario me lo comentó. Gracias por dejar sus comentarios, eso ayuda para mejorar el contenido.
muy bueno ahora lo entendi vengo de tres videos y este esta super ! gracias twt
excelente explicación.
Hola! Bueno el video... El código fuente está disponible revisión? Sería bueno también dejar el diagrama de clases... Saludos
Buenísimo.
Digamos que lo tienes expuesto en una api recibe un param "language" puede ser python, javascript, go, etc. El controller tiene un servicio: Transpiler. A la hora de setear la estrategia igual necesitas la lógica para definir cual va de acuerdo al param recibido. ¿Que recomendarías? Lo básico, no recomendado por lo poco escalable es hacer if-else, o switch-cases. En java, solía usar una funcción en cada implementación de la interfaz, que comparaba el param recibido y retornaba true or false si hacía match. La lógica es listar todas las estrategias y recorrerlas hasta encontrar la que haga match/retorne true. Y esa es la que se usa.
Por lo que entiendo tienes las estrategias cargadas en una lista/array, haces un recorrido hasta hacer match con alguna y ejecutar la estrategia. Una posible solución a eso es que en lugar de una lista/array utilices un mapa/hashtable/diccionario donde la key sea el param a recibir y el valor su respectiva estrategia, la forma de instanciarlo ya queda de como lo quieran implementar, ya sea que carguen la instancia de cada strategia (posiblemente eso hacen en la lista) o que pasen la referencia de la clase y se haga la instancia al momento de hacer match, pero la idea es que podría quedar algo así: { java: JavasStrategy, go: GoStrategy, ... }