Sunteți pe pagina 1din 20

SRE

CEIM

PATRONES DE DISEO Y STRUTS

SUNION

SRE

CEIM

NDICE
PATRONES DE DISEO QU SON? ORGENES Y RELACIONES CARACTERSTICAS DESCRIPCIN CUALIDADES ELEMENTOS CLASIFICACIN DE LOS PATRONES DE DISEO PATRONES DE CREACIN INTRODUCCIN A PATRONES DE CREACIN CLASIFICACIN DE LOS PATRONES DE CREACIN PATRN ABSTRACT FACTORY PATRN FACTORY METHOD PATRN SINGLETON PATRONES ESTRUCTURALES INTRODUCCIN A PATRONES ESTRUCTURALES CLASIFICACIN DE LOS PATRONES ESTRUCTURALES PATRN ADAPTER PATRN COMPOSITE PATRN DECORADOR PATRN FACADE PATRN PROXY PATRONES DE COMPORTAMIENTO INTRODUCCIN A PATRONES DE COMPORTAMIENTO CLASIFICACIN DE LOS PATRONES DE COMPORTAMIENTO PATRN COMMAND PATRN ITERATOR PATRN OBSERVER PATRN STATE PATRN VISITOR PATRN TEMPLATE METHOD FRAMEWORK STRUTS FRAMEWORKS MVC COMPONENTES DEL MODELO COMPONENTES DE LA VISTA COMPONENTES DE LA VISTA VALIDACIN INTERNACIONALIZACIN TILES 1 1 1 1 2 2 2 3 5 5 5 5 6 6 7 7 7 7 8 8 8 9 11 11 11 11 12 12 12 13 13 15 15 15 15 15 16 16 16 17

SUNION

SRE

Patrones de Diseo y Struts

Patrones de Diseo

CEIM

Patrones de Diseo

Qu son?
Cristopher Alexander da la siguiente definicin de patrn:
" Cada patrn describe un problema que ocurre una y otra vez en nuestro entorno, para describir despus el ncleo de la solucin a ese problema, de tal manera que esa solucin pueda ser usada ms de un milln de veces sin hacerlo ni siquiera dos veces de la misma forma." Resumiendo: Un patrn no es ms que una misma solucin, que sirve para diferentes problemas de ndole similar, por lo tanto los Patrones se convierten en una parte muy importante en las Tecnologas Orientadas a Objetos para poder conseguir la reutilizacin.

Orgenes y Relaciones
El origen se lo debemos a Christopher Alexander y sus patrones de Arquitectura. Estos conceptos han ido evolucionando en y con el campo de la ingeniera del software hasta nuestros tiempos. Los patrones son una forma documentada de resolver problemas de ingeniera del software, formando una parte muy importante en las Tecnologas Orientadas a Objetos para poder conseguir la reutilizacin.

Caractersticas
Las caractersticas de los patrones se pueden resumir en:

Solucionan problemas. Son un concepto probado. La solucin dada por un patrn no es obvia. Describe participantes y relaciones entre ellos. Tiene un componente humano significativo

-1SUNION

SRE

Patrones de Diseo

Patrones de Diseo y Struts

CEIM

Descripcin
La informacin relativa a un patrn, se encuentra encapsulada en los siguientes puntos significativos:

Nombre: nombre descriptivo del patrn. Propiedades: clasificacin del tipo de patrn. Objetivo o Propsito: breve explicacin de las implicaciones del patrn. Aplicabilidad: como y cuando se debe usar. Estructura: descripcin del patrn. Consecuencias: implicaciones del uso del patrn. Patrones relacionados: enumeracin de otros patrones con los que se relacione. Cdigo de ejemplo: ejemplo de cdigo del patrn.

Cualidades
Los patrones ofrecen las siguientes cualidades:

Encapsulacin y abstraccin Generatividad y composicin Extensin y variabilidad Equilibrio

Elementos
Los elementos esenciales de un patrn son:

Nombre Problema Solucin Consecuencia

-2SUNION

SRE

Patrones de Diseo y Struts

Patrones de Diseo

CEIM

Clasificacin de los patrones de diseo

CREACIN

Abstract Factory , Builder, Factory Method, Prototype, Singleton Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy Chain of responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor.

ESTRUCTURALES

COMPORTAMIENTO

-3SUNION

SRE

CEIM

SUNION

SRE

Patrones de Diseo y Struts

Patrones de Creacin

CEIM

Patrones de Creacin

Introduccin a patrones de creacin


Los patrones de creacin sirve de gua para la creacin de objetos, permitiendo tratar las clases a crear de forma genrica dejando para ms tarde la decisin de qu clases crear o cmo crearlas. Segn donde se tome dicha decisin podemos clasificarlos en:

patrones de creacin de clase patrones de creacin de objeto

Clasificacin de los patrones de Creacin


Abstract Factory: soluciona el problema de la creacin de familias de objetos. Builder: se usa para permitir la creacin de varios objetos complejos a partir de otro objeto. Factory Method:es una simplificacin del Abstract Factory. Prototype: sirve para crear objetos nuevos duplicados. Singleton: garantiza que una clase slo tenga una instancia.

Patrn Abstract Factory


Proporciona una interfaz para crear familias de objetos relacionados o que dependen entre s, sin especificar sus clases concretas. Se puede usar, por ejemplo, para implementar un sistema de gestin de ventanas o sistema de ficheros para diversos sistemas operativos. Algunas consecuencias de su aplicacin son:

Asla las clases concretas. Facilita el intercambio de familias de productos. Promueve la consistencia entre productos. Dificulta la incorporacin de nuevos tipos de productos.

-5SUNION

SRE

Patrones de Creacin

Patrones de Diseo y Struts

CEIM

Patrn Factory Method


Define una interfaz para crear un objeto pero deja que sean las subclases quienes decidan que clase instanciar. Permite que una clase delegue en sus subclases la creacin del objeto. Se utiliza cuando:

Una clase no puede prever la clase de objetos que debe crear. Una clase quiere que sean sus subclases quienes especifiquen los objetos que sta crea. Se sabe cundo crear un objeto pero no conoce su tipo. Se desea crear un framework extensible. Necesita algunos constructores sobrecargados con la misma lista de parmetros (no permitido en Java). En vez de eso, utilizar varios mtodos de fabricacin con distinto nombre.

Patrn Singleton
Garantiza que una clase solo tenga una instancia. Todos los objetos que utilizan una instancia de esa clase usan la misma instancia. Se utiliza cuando:

La instancia de una clase es nica, y debe ser accesible a los clientes desde un punto de acceso conocido. La nica instancia debera ser extensible por herencia, y los clientes deberan poder usar una instancia extendida sin modificar su cdigo.

Algunas consecuencias de su aplicacin son el acceso controlado a la nica instancia, espacio de nombres reducido, permite un nmero variable de instancias y tener subclases.

-6SUNION

SRE

Patrones de Diseo y Struts

Patrones Estructurales

CEIM

Patrones Estructurales
Introduccin a patrones estructurales
Los patrones estructurales se centran en:

la combinacin de clases (utilizando la herencia para componer interfaces que nos permiten establecer las relaciones entre clases) y objetos (describen formas de componer los objetos para conseguir nueva funcionalidad) para formar estructuras ms complejas.

Clasificacin de los patrones estructurales


Adapter: sirve de intermediario entre dos clases. Bridge: desacopla una abstraccin de su implementacin y les permite variar independientemente. Composite: permite gestionar objetos complejos e individuales de forma uniforme. Decorador: es una simplificacin del Abstract Factory. Facade: simplifica los accesos a un conjunto de objetos relacionados proporcionando una interfaz de comunicacin. Flyweight: Reduce el nmero de objetos detallados de muy bajo nivel en un sistema usando la comparticin de objetos de forma eficiente. Proxy: proporciona un objeto con el que controlamos el acceso a otro objeto.

Patrn Adapter
Sirve de intermediario entre dos clases, convirtiendo las interfaces de una clase para que pueda ser utilizada por otra. Permite que cooperen clases que tienen interfaces incompatibles. Se aplica cuando:

Se quiere usar una clase existente y su interfaz no concuerda con la que se necesita. Deba realizar una traduccin entre interfaces de varios objetos. Un objeto tiene que actuar como intermediario para un grupo de clases, y solo es posible saber en tiempo de ejecucin qu clase ser utilizada. Se quiere crear una clase reutilizable que coopere con clases no relacionadas o que no han sido previstas. Es necesario usar varias subclases existentes, pero no resulta prctico adaptar su interfaz heredando de cada una de ellas. -7SUNION

SRE

Patrones Estructurales

Patrones de Diseo y Struts

CEIM

Patrn Composite
Construir objetos de complejidad mayor mediante otros ms sencillos de forma recursiva, formando una jerarqua en estructura de rbol. Se aplica cuando:

Tenga que representar un componente modelado como una estructura rama-hoja (o parte-todo o contenedor-contenido). La estructura pueda tener cualquier nivel de complejidad y sea dinmica. Quiera tratar de forma uniforme toda la estructura del componente, utilizando operaciones comunes para toda la jerarqua. Desee que los clientes sean capaces de obviar las diferencias entre objetos compuestos e individuales.

Patrn Decorador
Aade nuevas responsabilidades dinmicamente a un objeto sin modificar su apariencia externa o su funcin, es una alternativa a crear demasiadas subclases por herencia. Se aplica en las siguientes situaciones:

Para aadir funcionalidad a una clase sin las restricciones que implica la utilizacin de la herencia. Cuando se quiera aadir funcionalidad a una clase de forma dinmica en tiempo de ejecucin y que sea transparente a los usuarios. Haya caractersticas que varen independientemente, que deban ser aplicadas de forma dinmica y que se puedan combinar arbitrariamente sobre un componente.

Patrn Facade
Simplifica el acceso a un conjunto de subsistemas o un sistema complejo. Representa una nica interfaz unificada, que envuelve el subsistema, y es responsable de colaborar con los componentes del subsistema. Se aplica en las siguientes situaciones:

Para reducir la dependencia entre clases. Ofrece un punto de acceso al resto de clases, si estas cambian o se sustituyen por otras, slo hay que actualizar la clase Facade sin que el cambio afecte a las aplicaciones cliente.

-8SUNION

SRE

Patrones de Diseo y Struts


Patrones Estructurales

CEIM

Ofrece un acceso sencillo a subsistemas complejos proporcionando una interfaz ms sencilla sin eliminar las opciones avanzadas. Cuando tenga que descomponer un sistema en capas, puede utilizar Facade para ofrecer una interfaz de acceso entre las mismas. Para reducir el acoplamiento entre los clientes y los subsistemas.

Patrn Proxy
Proporciona un representante o sustituto de otro objeto para controlar el acceso a ste. Use el patrn Proxy cuando necesite sustituir una referencia simple a un objeto por una referencia ms elaborada.

Proxy Remoto: Cuando el objeto est en un sistema remoto y necesite un representante local. Proxy Virtual: Para retrasar la creacin de objetos costosos hasta que sean necesarios. Proxy de Proteccin: Para controlar los derechos de acceso a un objeto. Proxy de Sincronizacin: Para gestionar accesos de mltiples clientes a un recurso. Referencias Inteligentes: Para gestin y mantenimiento del acceso a un objeto real.

-9SUNION

SRE

CEIM

SUNION

SRE

Patrones de Diseo y Struts

Patrones de Comportamiento

CEIM

Patrones de Comportamiento

Introduccin a patrones de Comportamiento


Los Patrones de Comportamiento estn relacionados con el flujo de control de un sistema y la asignacin de responsabilidades a objetos. Se centran en la interaccin y cooperacin entre clases. Los patrones de comportamiento hablan de como interaccionan o se comunican entre si los objetos para conseguir ciertos resultados.

Clasificacin de los patrones de Comportamiento


Chain of Responsability Command Interpreter Iterator Mediator Memento Observer State Strategy Visitor Template Method

Patrn Command
Encapsula un comando en un objeto. Este objeto contiene el comportamiento y los datos necesarios para una accin especfica. Permite parametrizar a los clientes con diferentes peticiones, hacer cola o llevar un registro de las peticiones. Adems permite deshacer operaciones. El patrn Command se utiliza en los siguientes casos:

Cuando se quieren parametrizar objetos con una accin a realizar Cuando Se quiera desacoplar la fuente de una peticin del objeto que la cumple. Cuando haya que implementar un mecanismo de rehacer/deshacer acciones. Cuando haya que poner en cola y ejecutar comandos en momentos distintos.

- 11 SUNION

SRE

Patrones Estructurales

Patrones de Diseo y Struts

CEIM

Para permitir registrar los cambios de manera que se puedan volver a aplicar en caso de una cada del sistema. Para estructurar un sistema mediante operaciones de alto nivel basadas en operaciones ms sencillas (primitivas). Sistemas transaccionales.

Patrn Iterator
Su objetivo es proporcionar una forma coherente de acceder secuencialmente a los datos de una coleccin, independientemente del tipo de coleccin. Este patrn se utiliza en situaciones como estas:

Cuando queramos proporcionar una forma uniforme, coherente e independiente de la implementacin, de desplazarse por los elementos de una coleccin. Cuando queramos permitir el recorrido de mltiples colecciones, permitiendo que distintos clientes naveguen simultneamente por la misma coleccin.

Patrn Observer
Permite definir dependencias uno-a-muchos de forma que los cambios en un objeto se comuniquen a los objetos que dependen de l. El patrn Observer se usa cuando:

Existe al menos un emisor de mensajes. Uno o ms receptores de mensajes podran variar dentro de una aplicacin o entre aplicaciones. Si se produce un cambio en un objeto se requiere el cambio de otros y no se sabe cuantos se necesitan cambiar. No queremos que estn fuertemente acoplados.

En el API de Java tenemos la interfaz Observer y la clase Observable. Esto permite que muchos objetos reciban eventos de otro objeto en lugar de los sistemas de eventos bsicos que slo permiten notificar a un nico objeto.

Patrn State
Permite que un objeto se comporte de distinta forma dependiendo de su estado interno, como si cambiase la clase a la que pertenece. Permite cambiar fcilmente el comportamiento de un objeto en tiempo de ejecucin.

- 12 SUNION

SRE

Patrones de Diseo y Struts Utiliza el patrn State cuando:

Patrones de Comportamiento

CEIM

El comportamiento de un objeto dependa de su estado y queramos cambiar de comportamiento en tiempo de ejecucin. Distintas operaciones de una clase tengan una estructura de control condicional compleja que dependa del estado, permite convertir cada rama en una clase y tratar el estado como un objeto aparte.

Patrn Visitor
Su objetivo es proporcionar una forma fcil y sostenible de ejecutar acciones en una familia de clases. Este patrn centraliza los comportamientos y permite que sean modificados o ampliados sin cambiar las clases sobre las que actan. El patrn Visitor se suele utilizar cuando:

Un sistema contenga un grupo de clases relacionadas. Haya que realizar muchas operaciones distintas y no relacionadas sobre algunos o todos los objetos de una estructura de objetos y no queremos contaminar sus clases con dichas operaciones. Las operaciones deban ejecutarse de forma diferente en cada una de las distintas clases.

Patrn Template Method


Proporciona un mtodo que permite que las subclases redefinan partes del mtodo sin reescribirlo. El patrn Template Method se utiliza cuando: Haya que proporcionar un esqueleto para un mtodo, permitiendo que las subclases redefinan partes especficas del mtodo. Centralizar partes de un mtodo que se definen en todos los subtipos de una clase, pero que siempre tienen una pequea diferencia en cada subclase. Queramos evitar la duplicacin de cdigo entre clases de una jerarqua. Controlar las operaciones que es necesario redefinir en las subclases.

- 13 SUNION

SRE

CEIM

SUNION

SRE

Patrones de Diseo y Struts

Framework Struts

CEIM

Framework Struts

Frameworks

Los frameworks no son aplicaciones completas. Los puntos fijos, o hot spots son aquellas partes del framework que ya estn implementadas. Los puntos de extensin son aquellas partes que se implementan para obtener una aplicacin completa.

MVC

Modelo: es donde se implementan las operaciones especficas de la aplicacin. Vista: representan las operaciones del modelo y sirve como interfaz de usuario. Controlador: maneja las peticiones, ejecuta las clases del modelo y muestra las vistas.

Componentes del modelo


En las clases del modelo se realizan las operaciones propias de la lgica de negocio de la aplicacin. Struts no proporciona ningn componente para implementar estas clases, deja el programador la libertar para emplear la tecnologa que desee, como Enterprise JavaBeans.

Componentes de la vista

Struts es independiente de la tecnologa de vista, pero el mtodo ms sencillo es usar ficheros JSP. Se pueden usar etiquetas estndar de JSP, etiquetas de las bibliotecas de Struts, y tambin bibliotecas de etiquetas de terceros. Struts incluye bibliotecas de etiquetas para facilitar la creacin de pginas.

- 15 SUNION

SRE

Framework Struts

Patrones de Diseo y Struts

CEIM

Componentes de la vista
El controlador en Struts est formado por los siguiente componentes:

ActionServlet, la clase principal del controlador. Esta clase tiene un mtodo llamado RequestProcessor() que es el que atiende las peticiones. ActionForm, son las clases formulario utilizadas en la aplicacin. Tienen una serie de atributos y unos mtodos get/set para esos atributos. Adicionalmente pueden tener un mtodo validate() y/o un mtodo reset(). Action, las clases que encapsulan la lgica de negocio de la aplicacin. El ActionServlet llama a su punto de extensin, el mtodo execute(). struts-config.xml, es el fichero donde se definen todas las acciones, formularios, el fichero de mensajes y los plug-ins que se usen en la aplicacin.

Validacin

La validacin se puede realizar bien mediante la implementacin del mtodo validate() en los form-beans, o bien mediante el framework Validator. En el caso de usar el mtodo validate(), para los casos de error se crean objetos de tipo ActionMessage con los mensajes de error que se vayan a mostrar y se guardan dentro de un mensaje de tipo ActionError. En la vista se utilizan etiquetas de la biblioteca de etiquetas de Struts para acceder al objeto ActionError. Para utilizar el framework Validator, es necesario definirlo como plug-in en el fichero de configuracin struts-config.xml, y configurar el comportamiento en los formularios en el fichero validation.xml.

Internacionalizacin

Para crear aplicaciones con soporte para varios idiomas, es necesario crear ficheros de mensajes, uno para cada idioma, que son ficheros de texto con unas claves asociadas a cada mensaje. Los nombres de los ficheros de mensajes se establecen a partir de un nombre que se define en el fichero struts-config.xml, y luego aadiendo el sufijo '_xx', donde 'xx' es el cdigo del idioma. El controlador elije el fichero de mensajes adecuado a partir de la variable locale del navegador web o del sistema operativo. Para cambiar el fichero de mensajes de la aplicacin se utiliza el mtodo setLocale(), al que se le pasa como parmetro un objeto de tipo locale con el idioma que se quiere usar.

- 16 SUNION

SRE

Patrones de Diseo y Struts

Framework Struts

CEIM

Tiles
El framework Tiles permite construir pginas montando componentes reutilizables, llamados tiles. Estos elementos suelen ser simplemente pginas JSP. Adems, cada una de estos tiles puede estar compuesto a su vez por ms tiles. Para utilizar el framework Tiles es necesario:

Registrar el framework como plug-in en el fichero de configuracin strutsconfig.xml Crear el fichero tiles-defs.xml con las definiciones de las componentes de las pginas. Utilizar las etiquetas tiles:insert en los ficheros JSP donde se vayan a utilizar los elementos tiles.

- 17 SUNION

S-ar putea să vă placă și