Patron De Plantilla - Template Method

Páginas: 10 (2427 palabras) Publicado: 20 de diciembre de 2012
Lab 2: Patr´n de Plantilla
o
Luis Arturo Islas Tirado (1162012)
Tc3003.1 Dise˜o y Arquitectura de Software
n
Tecnol´gico de Monterrey, Campus Estado de M´xico
o
e

A01162612@itesm.mx
27 de enero de 2011

1.

Introducci´n
o

Cuando los problemas en un desarrollo de software est´n sujetos a contextos similares, los patrones de dise˜o
a
n
son la herramienta ideal para brindarlessoluci´n. Debemos tener presente los siguientes elementos de un
o
patr´n: su nombre, el problema (cuando aplicar un patr´n), la soluci´n (descripci´n abstracta del problema)
o
o
o
o
y las consecuencias (costos y beneficios).
En esta ocasi´n me enfocar´ exclusivamente en el patr´n conocido como Patr´n de Plantilla (Template
o
e
o
o
Method en su traducci´n al ingl´s). En la secci´n 2describir´ dicho patr´n, as´ como el c´digo fuente de un
o
e
o
e
o
ı
o
ejemplo desarrollado en Ruby. Dentro de la secci´n 3 se mostrar´ el c´digo de algunas pruebas de unidad y
o
a
o
sus respectivos resultados, para brindar una mejor idea del funcionamiento del patr´n de plantilla.
o

2.

Patr´n de Plantilla
o

La idea general del modelo de plantilla es definir el esqueleto de unalgoritmo en una operaci´n, pero difiriendo
o
alguno de los pasos a la subclase, de esta forma las subclases pueden cambiar ciertos aspectos del algoritmo,
sin cambiar su estructura general. El patr´n m´todo plantilla debe su nombre a que utilizarlo es como cubrir
o
e
una plantilla o un formulario: Una clase abstracta incluye un m´todo concreto que hace de plantilla y el
e
m´todo plantillallama a una serie de m´todos abstractos que son como los huecos que deben incluir las
e
e
subclases.
Los elementos que componen a este patr´n son:
o
Clase Abstracta (Abstract Class): Define operaciones primitivas y abstractas que forman los pasos de un
algoritmo y que las subclases deben implementar. Tambi´n implementa el m´todo plantilla que define
e
e
el esqueleto del algoritmo. El m´todoplatilla llama a las operaciones primitivas, pero tambi´n puede
e
e
utilizar otros elementos de la clase abstracta o de otras clases.
Clase Concreta (Concrete Class): Implementa las operaciones primitivas que definen el comportamiento
espec´
ıfico del algoritmo para esta subclase.
Una ventaja y una desventaja:
La principal ventaja del patr´n de plantilla, es que permite definir la estructurageneral de un algoritmo,
o
pero permitiendo que las subclases puedan cambiar ciertos aspectos, sin cambiar su estructura general.
Para que el desarrollo de este patr´n sea efectivo es necesario indicar de forma clara que m´todos son
o
e
propios de la clase y cuales son operaciones abstractas.
Para ejemplificar el funcionamiento de este patr´n se desarroll´ el siguiente problema. Requerimosde hacer un
o
o
programa que recibe los datos de una tabla(encabezado, tuplas) y seg´n el formato que se desee, el programa
u
devuelva la codificaci´n para construir esa tabla en dicho formato. Por el momento, solo requerimos de que
o
la tabla se codifique en CSV(texto separado por comas ”,”), formato HTML y LaTeX.
1

Figura 1: Ilustraci´n de la l´
o
ınea de herencia del codificador detabla
De manera que se requiere de cuatro clases, la clase abstracta y las 3 subclases de cada formato.
La clase TableGenerator es la clase abstracta, su c´digo fuente y descripci´n es el siguiente:
o
o
#Definiendo la clase TableGenerator(Generador de tabla)
class TableGenerator
#M´todo constructor del objeto TableGenerator que recibe el encabezado y la informaci´n de la tabla.
e
o#Genera sus respectivas variables de instancia.
def initialize(header, data)
@header = header
@data = data
end
#M´todo que construye la tabla, uniendo los elementos de la tabla
e
def generate
generate_header_row + (@data.map {|x| generate_row(x)}).join
end
#M´todo que genera la tupla del encabezado
e
def generate_header_row
(@header.map {|x| generate_header_item(x)}).join
end
#M´todo...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Template Method
  • Template Method
  • Plantilla Del Patrón Strategy
  • Template
  • Méthode
  • template
  • method
  • Plantillas

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS