Template Method
Por Christian Esquivel y Daniel Castro


Abril 2013
Agenda
●   Definición y Propósito
●   Problema
●   Solución
●   Ventajas
●   Participantes y Colaboradores
●   Consecuencias
●   Desventajas
●   Diagrama de Clases
●   Diagrama de Secuencia
●   Inversión de Control
●   Hollywood Principle
●   Demo (implementación)
Definición y Propósito




Permitir que ciertos pasos de un algoritmo
definido en una operación de una superclase,
sean redefinidos en las subclases sin
necesidad de tener que sobreescribir la
operación entera.
Problema



Cuando contamos con un algoritmo con varios
pasos que no cambian, de modo que dichos
pasos invariantes serían implementados en
una superclase, dejando la implementación de
los pasos que cambian para las subclases.
Ventajas




La principal ventaja es que facilita la
reutilización de código, por eso es fundamental
este patrón en muchos frameworks. (Spring)
Solución




Para evitar la replicación de código mediante
generalización se factoriza el comportamiento
común de varias subclases en una única
superclase.
Participantes
Clase Abstracta: proporciona la definición de una serie de
operaciones primitivas que implementan los pasos de un
algoritmo y que serán definidas en las subclases.
Dicho método actúa a modo de plantilla, de ahí el nombre
de este patŕon, definiendo la secuencia de operaciones de
un algoritmo.

Clase Concreta: implementa las operaciones primitivas
definidas en la clase abstracta de la cual hereda, quedando
así determinado el comportamiento específico del
algoritmo definido en el método plantilla, para cada
subclase.
Colaboradores




Las clases concretas se basan en la clase
abstracta para implementar la parte invariante
del algoritmo.
Consecuencias


La utilización de este patrón es fundamental a
la hora de reutilizar código.

Operaciones de enganche o hooks
(proporcionan un código por defecto que puede
ser refinado en las subclases).
Desventajas




Se puede producir ambigüedad si no se
escribe bien.
Diagrama Clases
Implementación
Es recomendable declarar las operaciones
primitivas de tal forma que sólo puedan ser
llamadas por el método plantilla

Debe reducirse en la medida de lo posible el
número de operaciones primitivas que van a
ser invocadas desde el método plantilla. De
este forma se reducirá la complejidad de las
subclases y resultará menos tediosa su
implementación.
Inversión de Control

Tradicionalmente el programador especifica la
secuencia de decisiones y procedimientos que pueden
darse durante el ciclo de vida de un programa
mediante llamadas a funciones.
En su lugar, en la inversión de control se especifican
respuestas deseadas a sucesos o solicitudes de datos
concretas, dejando que algún tipo de entidad o
arquitectura externa lleve a cabo las acciones de
control que se requieran en el orden necesario y para
el conjunto de sucesos que tengan que ocurrir.
Hollywood Principle


En cierto modo la inversión de control es una
implementación del Principio de Hollywood,
una metodología de diseño de software, cuyo
nombre proviene de las típicas respuestas que
se les dan a los actores amateurs en las
audiciones del cine: no nos llames; nosotros te
llamaremos.
Demo

Pattern template

  • 1.
    Template Method Por ChristianEsquivel y Daniel Castro Abril 2013
  • 2.
    Agenda ● Definición y Propósito ● Problema ● Solución ● Ventajas ● Participantes y Colaboradores ● Consecuencias ● Desventajas ● Diagrama de Clases ● Diagrama de Secuencia ● Inversión de Control ● Hollywood Principle ● Demo (implementación)
  • 3.
    Definición y Propósito Permitirque ciertos pasos de un algoritmo definido en una operación de una superclase, sean redefinidos en las subclases sin necesidad de tener que sobreescribir la operación entera.
  • 4.
    Problema Cuando contamos conun algoritmo con varios pasos que no cambian, de modo que dichos pasos invariantes serían implementados en una superclase, dejando la implementación de los pasos que cambian para las subclases.
  • 5.
    Ventajas La principal ventajaes que facilita la reutilización de código, por eso es fundamental este patrón en muchos frameworks. (Spring)
  • 6.
    Solución Para evitar lareplicación de código mediante generalización se factoriza el comportamiento común de varias subclases en una única superclase.
  • 7.
    Participantes Clase Abstracta: proporcionala definición de una serie de operaciones primitivas que implementan los pasos de un algoritmo y que serán definidas en las subclases. Dicho método actúa a modo de plantilla, de ahí el nombre de este patŕon, definiendo la secuencia de operaciones de un algoritmo. Clase Concreta: implementa las operaciones primitivas definidas en la clase abstracta de la cual hereda, quedando así determinado el comportamiento específico del algoritmo definido en el método plantilla, para cada subclase.
  • 8.
    Colaboradores Las clases concretasse basan en la clase abstracta para implementar la parte invariante del algoritmo.
  • 9.
    Consecuencias La utilización deeste patrón es fundamental a la hora de reutilizar código. Operaciones de enganche o hooks (proporcionan un código por defecto que puede ser refinado en las subclases).
  • 10.
    Desventajas Se puede producirambigüedad si no se escribe bien.
  • 11.
  • 12.
    Implementación Es recomendable declararlas operaciones primitivas de tal forma que sólo puedan ser llamadas por el método plantilla Debe reducirse en la medida de lo posible el número de operaciones primitivas que van a ser invocadas desde el método plantilla. De este forma se reducirá la complejidad de las subclases y resultará menos tediosa su implementación.
  • 13.
    Inversión de Control Tradicionalmenteel programador especifica la secuencia de decisiones y procedimientos que pueden darse durante el ciclo de vida de un programa mediante llamadas a funciones. En su lugar, en la inversión de control se especifican respuestas deseadas a sucesos o solicitudes de datos concretas, dejando que algún tipo de entidad o arquitectura externa lleve a cabo las acciones de control que se requieran en el orden necesario y para el conjunto de sucesos que tengan que ocurrir.
  • 14.
    Hollywood Principle En ciertomodo la inversión de control es una implementación del Principio de Hollywood, una metodología de diseño de software, cuyo nombre proviene de las típicas respuestas que se les dan a los actores amateurs en las audiciones del cine: no nos llames; nosotros te llamaremos.
  • 15.