Pregunta

Mi maestro es muy bueno y tiendo a entender sus puntos, pero este solo pasa por mi cabeza. Explica el método de plantilla en dos variantes;
- Unificación: la variante estándar, que se compone de una clase abstracta con algunos métodos abstractos que definen las partes variantes del algoritmo fijo de otra manera.
- Separación: su propia variante (¿creo?) Donde una clase contiene el TemplateMethod () y usa delegación a una interfaz para variar las partes del algoritmo, que me parece exactamente como el patrón de estrategia.

¿Alguien puede ver cuál es su punto y cómo la variante de 'separación' es diferente del patrón de estrategia?
He adjuntado una imagen que contiene los dos patrones de su libro (que aún no se ha publicado).

http://img64.imageshack.us/img64/3620/strategytemplate.jpg

¿Fue útil?

Solución

Nunca he oído hablar de una "variante de separación" del patrón de método de plantilla, y estoy de acuerdo en que se ve extremadamente similar a la estrategia. Incluso si hay algún razonamiento sobre la propiedad de la interfaz o cómo los invoca desde una perspectiva del cliente, apenas encuentro que hay ningún beneficio para considerarlos diferentes patrones.

Otros consejos

En uso común, el método de plantilla utiliza subclases Para proporcionar los comportamientos variados. Con estrategia, tu inyectar un objeto de algoritmo. En su ejemplo, no hay distinción útil entre Plantilla (separación) y Estrategia. Dada la edad del gamma et al Libro, la introducción de esta nueva terminología sin explicar adecuadamente la diferencia es probable que simplemente cause confusión cuando hable con otros programadores. Evite usarlo fuera de sus lecciones.

La plantilla le permite acceder a los miembros protegidos en la clase base. La estrategia le permite desarrollar sus algoritmos más los que los usan que los usan, y le permite inyectar el mismo algoritmo en muchos tipos diferentes de objetos.

Método de plantilla:

  1. Es un patrón de diseño de comportamiento
  2. Se utiliza para crear un mechón de método y diferir algunos de los pasos de implementación a las subclases. Consiste en ciertos pasos cuyo orden es fijo.
  3. Define los pasos para ejecutar un algoritmo y puede proporcionar una implementación predeterminada que podría ser común para todas o algunas de las subclases.
  4. El método de plantilla de superclase llama métodos de subclases,

Patrón de estrategia:

  1. Es un patrón de comportamiento
  2. Se basa en la delegación
  3. Cambia las entrañas del objeto modificando el comportamiento del método
  4. Se usa para cambiar entre familia de algoritmos
  5. Cambia el comportamiento del objeto en el momento de ejecución. Se seleccionará un algoritmo de una familia de algoritmo.

Diferencias básicas.

  1. Método de plantilla usa herencia y Estrategia Utiliza la composición
  2. los Método de plantilla implementado por la clase base no debe ser anulado. De esta manera, la estructura del algoritmo está controlada por la súper clase, y el Los detalles se implementan en las sub clases
  3. Estrategia Encapsula el algoritmo detrás de una interfaz, que nos proporciona la capacidad de cambiar el algoritmo en el tiempo de ejecución. Múltiples estrategias proporcionan una implementación diferente a la interfaz.

Echa un vistazo a JournalDev Método de plantilla y Estrategia artículos para una mejor comprensión junto con trayectoria artículos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top