" Como se puede ver, las clases de implementación también dependen de la clase de método de la plantilla. Esta dependencia hace que cambie el método de la plantilla si uno quiere cambiar algunos de los pasos del algoritmo. Por otro lado, la estrategia encapsula completamente el algoritmo. Le da a la implementación clases para definir completamente un algoritmo. Por lo tanto, si llega algún cambio, uno necesita cambiar el código para las clases previamente escritas. Esta fue la razón principal por la que elegí la estrategia para diseñar las clases.
Una característica del método de plantilla es que el método de plantilla controla el algoritmo. Lo que puede ser algo bueno en otra situación, pero en mi problema esto me estaba restringiendo para diseñar las clases. Por otro lado, la estrategia no controla los pasos de un algoritmo que me permite agregar métodos de conversión completamente diferentes. Por lo tanto, en mi caso, la estrategia me ayuda para la implementación.
Un inconveniente de la estrategia es que hay demasiada redundancia de código y menos intercambio de código. Como es obvio en el ejemplo presentado de este artículo, tengo que repetir el mismo código en cuatro clases una y otra vez. Por lo tanto, es difícil de mantener porque si la implementación de nuestro sistema, como el paso 4, que es común a todos, cambia, entonces tendré que actualizar esto en las 5 clases. Por otro lado, en el método de plantilla, solo puedo cambiar la superclase y los cambios se reflejan en las subclases. Por lo tanto, el método de plantilla proporciona una cantidad muy baja de redundancia y una gran cantidad de código compartido entre las clases.
La estrategia también permite cambiar el algoritmo en tiempo de ejecución. En el método de plantilla, habrá que reinicializar el objeto. Esta característica de la estrategia proporciona una gran cantidad de flexibilidad. Desde el punto de vista del diseño, uno tiene que preferir la composición sobre la herencia. Por lo tanto, usar el patrón de estrategia también se convirtió en la opción principal para el desarrollo "