Patrones Template y Front Controller
Patrones Template y Front Controller
Patrones Template y Front Controller
CHIMBORAZO
NOMBRE: CODIGO:
TÍTULO:
PATRONES TEMPLATE Y FRONT CONTROLLER
RESUMEN:
Los patrones de diseño son muy interesantes para los programadores, ya que nos ofrecen soluciones
a problemas comunes y cuotidianos a la hora de diseñar una aplicación. Existen infinidad de casos en
que el problema sigue el mismo patrón, solo cambia el contexto; un patrón de diseño te propone una
solución a este tipo de problemas.
En la actualidad existen muchísimos patrones de diseño, pero en esta ocasión solo vamos a revisar los
patrones Template: que es un patrón de diseño de comportamiento que define el esqueleto de
programa de un algoritmo en un método, llamado método de plantilla, el cual difiere algunos pasos a
las subclases. Permite redefinir ciertos pasos seguros de un algoritmo sin cambiar la estructura del
algoritmo y Front Controller: que es el patrón de diseño del software del controlador frontal se incluye
en varios catálogos de patrones y está relacionado con el diseño de aplicaciones web. Es "un
controlador que maneja todas las solicitudes de un sitio web ", que es una estructura útil para que los
desarrolladores de aplicaciones web logren flexibilidad y reutilización sin redundancia de código.
PALABRAS CLAVE:
INTRODUCCIÓN:
Se dice que un patrón de diseño es una solución de diseño reusable, que consta de objetos y/o clases
organizados de tal forma que contribuyen con la resolución de un problema recurrente de diseño de
software de una forma limpia. En la mayoría de los casos, por más específico que sea el problema al
que nos podemos enfrentar a lo largo del desarrollo de un software, las posibilidades de que alguien
con anterioridad se haya enfrentado a este mismo tipo de problema son bastante altas, es por eso
que puede que exista ya un diseño de solución que se pueda reutilizar para resolver el mismo.
Podemos decir que, si el modelo de solución encontrado se adapta a múltiples ámbitos, entonces nos
ESCUELA SUPERIOR POLITÉCNICA DE
CHIMBORAZO
encontramos ante un posible patrón de diseño de software. Estos modelos de solución son
considerados patrones de diseño si su efectividad fue probada resolviendo problemas similares en
otras ocasiones. Su reutilización también debe estar probada.
En 1994, cuatro autores Erich Gamma, Richard Helm, Ralph Johnson y John Vlissides, a los que
llamaron Gang of Four (GoF), publicaron un libro titulado Design Patterns, elementos de software
orientado a objetos reutilizables. Con este trabajo se inició el concepto de patrón de diseño en el
desarrollo de software y recoge 23 patrones de diseño comunes. Cada uno de ellos define la solución
para resolver un determinado problema, facilitando además la reutilización del código fuente.
A pesar de los beneficios de los patrones, el simple hecho de usarlos, no garantiza el éxito en el
desarrollo de una aplicación orientada a objetos, peor aún, el usar patrones sin fundamentos puede
llegar a convertirse en un problema superior a lo que sería diseñar una solución desde cero.
Esta investigación se enfoca en dos patrones que son: el Patrón Template y Front Controller que son
patrones de diseño software en generales, de dichos patrones se tratara de obtener la información
más relevante, así como la descripción de su funcionamiento y las ventajas que presentas al
implementar estos parones en el desarrollo de una aplicación, cabe recalcar que existen varios
patrones dedicados a otros ámbitos, como patrones de diseño para aplicaciones empresariales, etc.
Es responsabilidad del grupo de trabajo escoger el mejor patrón para implementarlo en el desarrollo
de su proyecto.
MARCO TEÓRICO:
PATRÓN TEMPLATE.
El patrón de diseño Template Method forma parte de la familia de patrones denominados de
comportamiento. Este tipo patrones ayudan a resolver problemas de interacción entre clases y
objetos.
Una posible solución podría ser copiar el algoritmo en cada de las diferentes entidades cambiando la
parte concreta en la que difieren. Esta solución tiene una consecuencia negativa ya que se genera
código duplicado.
La solución que propone el patrón Template Method es abstraer todo el comportamiento que
comparten las entidades en una clase (abstracta) de la que, posteriormente, extenderán dichas
entidades. Esta superclase definirá un método que contendrá el esqueleto de ese algoritmo común
(método plantilla o template method) y delegará determinada responsabilidad en las clases hijas,
mediante uno o varios métodos abstractos que deberán implementar.
Los métodos que incluyen en su código llamadas a métodos abstractos se denominan métodos
plantilla.
Estructura:
ESCUELA SUPERIOR POLITÉCNICA DE
CHIMBORAZO
Participantes:
➢ AbstractTemplate: implementa un método plantilla que define el esqueleto de un algoritmo
y define métodos abstractos que implementan las subclases concretas.
➢ ConcreteTemplate: implementa los métodos abstractos para realizar los pasos del algoritmo
que son específicos de la subclase.
Usos:
➢ Este patrón se vuelve de especial utilidad cuando es necesario realizar un algoritmo que sea
común para muchas clases, pero con pequeñas variaciones entre una y otras.
➢ Para proporcionar un esqueleto para un método, permitiendo que las subclases redefinan
partes específicas del método.
➢ Para centralizar partes de un método que se definen en todos los subtipos de una clase, pero
que siempre tiene una pequeña diferencia en cada subclase.
➢ Otro uso particular se da en la creación de sistemas de plugins. Por definición este patrón
garantiza la existencia de distintos métodos en una clase que pueden ser sobrescritos por un
descendiente.
Ventajas y Desventajas:
Ventajas:
➢ La principal ventaja es que facilita la reutilización de código, por eso es fundamental este
patrón en muchos Frameworks.
Desventajas:
Imagen 2: Ejemplo
En realidad, todos estos métodos pueden encapsularse en una sola llamada desde una clase abstracta
que englobe las demás clases. Esta clase abstracta tendrá un método que podremos llamar preparar()
y que mediante el uso de otro patron (el Facade) delegará su lógica en los métodos de las clases
concretas. Por ejemplo, es posible que los tallarines haya que cocerlos menos tiempo que los
macarrones, pero nosotros no lo sabremos, simplemente abstraeremos la lógica de la preparación en
la clase Pasta y su método preparar().
FRONT CONTROLLER:
Es un patrón de diseño que se basa en usar un controlador como punto inicial para la gestión de las
peticiones. El controlador gestiona estas peticiones, y realiza algunas funciones como: comprobación
de restricciones de seguridad, manejo de errores, mapear y delegación de las peticiones a otros
componentes de la aplicación que se encargarán de generar la vista adecuada para el usuario.
ESCUELA SUPERIOR POLITÉCNICA DE
CHIMBORAZO
El controlador frontal consolida todo esto canalizando todas las solicitudes a través de un solo objeto
Este controlador puede llevar a cabo un comportamiento común que se puede modificar en tiempo
de ejecución con decoradores. El manejador luego despacha a los objetos de comando para
comportamiento particular a una solicitud.
Los controladores frontales se utilizan a menudo en aplicaciones web para implementar flujos de
trabajo. Si bien no es un requisito estricto, es mucho más fácil controlar la navegación a través de un
conjunto de páginas relacionadas (por ejemplo, varias páginas utilizadas en una compra en línea)
desde un controlador frontal que hacer que las páginas individuales sean responsables de la
navegación.
El controlador frontal puede implementarse como un objeto Java o como un script en un lenguaje de
script como PHP , Raku , Python o Ruby que se llama en cada solicitud de una sesión web . Este script,
por ejemplo un index.php , manejaría todas las tareas que son comunes a la aplicación o el marco,
como el manejo de sesiones, el almacenamiento en caché y el filtrado de entrada. Basado en la
solicitud específica, luego crearía instancias de más objetos y métodos de llamada para manejar las
tareas particulares requeridas.
Estructura:
Participantes:
Este patrón maneja todas las peticiones. Normalmente se estructura en dos partes: un manejador
web y una jerarquía de comandos.
➢ FrontController: El controlador es el punto de contacto inicial para manejar todos los pedidos
en el sistema. El controlador puede delegar a un asistente para completar la autenticación y
autorización de un usuario o para iniciar la recuperación de contacto.
➢ Dispatcher: Sus tareas son:
• Localizar y lanzar las acciones específicas para la petición.
• Buscar y despachar la vista.
➢ Helper: se encarga de ayudar a la vista o al controlador a completar su procesamiento. Por lo
tanto, los ayudantes tienen numerosas responsabilidades, incluyendo la recopilación de datos
requeridos por la vista y el almacenamiento en el modelo intermedio
ESCUELA SUPERIOR POLITÉCNICA DE
CHIMBORAZO
Ventajas y Desventajas:
Ventajas:
Desventajas:
➢ La velocidad de respuesta disminuye al tener que ser procesadas las peticiones primero por
el controlador.
Conclusiones:
➢ Los patrones de diseño describen la solución a problemas que se repiten una y otra vez en
nuestros sistemas, de forma que se puede usar esa solución siempre que haga falta.
➢ El Front Controller implementa un controlador único y lo usa como el punto inicial de contacto
para manejar las peticiones. El controlador maneja el control de peticiones, incluyendo la
invocación de los servicios de seguridad como la autentificación y autorización, la delegación
del procesamiento de negocio, el control de la elección de una vista apropiada, el manejo de
errores y el control de la selección de estrategias de creación de contenido.
➢ El uso del patrón Front Controller evita la duplicación de código común de procesamiento de
peticiones, además de aumentar la reusabilidad de código.
Recomendaciones:
➢ Es recomendable que cuando se desee incluir un patrón de diseño en un sistema, se debe, en
lo posible, consultar con alguna persona con experiencia en el manejo de patrones de diseño,
pues su uso apropiado demanda tener cierta experiencia al respecto.
ESCUELA SUPERIOR POLITÉCNICA DE
CHIMBORAZO
Referencias:
ALDÁS MENA DANIEL ERNESTO, A. C. (2010). GUÍA PRÁCTICA PARA EL USO DE PATRONES DE DISEÑO
EN EL DESARROLLO DE SOFTWARE. QUITO. Obtenido de
https://bibdigital.epn.edu.ec/bitstream/15000/2669/1/CD-3355.pdf