Upload
carlos-mazo
View
223
Download
0
Embed Size (px)
DESCRIPTION
Patrones Diseño en Dllo SW Arquitectura SW 2 2
Citation preview
Arquitectura de SoftwareIngeniería de SistemasITMUnidad 2. Los patrones de diseño en el desarrollo de SoftwareUnidad 2.2 Patrones orientados a la estructura
Arquitectura de Software
Los patrones de Diseño en el Desarrollo de Software
Los 23 patrones, mencionados anteriormente, están organizados por dos criterios: Propósito (de creación, estructurales y de
comportamiento). Ámbito (clase y objeto).
Catalogo de patrones de diseño
Arquitectura de Software
Los patrones de Diseño en el Desarrollo de Software
Aspectos de diseño que los patrones de diseño permiten modificar
Propósito Patrones de diseño
Aspectos que pueden variar
Estructurales
Adapter - Adaptador
La interfaz de un objeto
Bridge - Puente La implementación de un objeto
Composite - Compuesto
La estructura y composición de un objeto
Decorator - Decorador
Las responsabilidades de un objeto sin usar la herencia
Facade - Fachada La interfaz de un subsistema
Flyweight - Peso Ligero
El coste de almacenamiento de los objetos
Proxy - Representante
Cómo se accede a un objeto; su ubicación
Patrones Estructurales
Los patrones estructurales tratan la composición de clases u objetos; para lo cual hacen uso de dos recursos, dependiendo del tipo de composición, es decir que para clases es necesaria la herencia mientras que para los objetos se describen formas de ensamblar objetos.
Arquitectura de Software
Patrones Estructurales
Nombre: AdaptadorFunción:Adaptar una interface para que pueda
ser utilizada por una clase que de otro modo no podría utilizarla.
Se puede aplicar cuando se desea reutilizar una clase existente, pero su interfaz no concuerda con lo que se necesita.
Arquitectura de Software
Adapter -Adaptador-
Patrones Estructurales
Motivación:Se está desarrollando un editor de dibujos
que permite realizar diagramas a partir d elementos gráficos como líneas, círculos, texto, etc.
Un elemento fundamental de dicho sistema es la clase ObjetoGráfico, que proporciona operaciones para modificar su forma (editar()) y para representarlo (dibujar()).
Arquitectura de Software
Adapter -Adaptador-
Patrones Estructurales
Motivación: Esta clase se especializa para cada tipo de
objeto gráfico: Línea, Círculo, etc., clases donde se han implementado adecuadamente dichas operaciones.
Sin embargo, la edición y representación de textos es una tarea complicada, por lo que se desea reutilizar la clase Text de la biblioteca de clases del entorno de programación.
Arquitectura de Software
Adapter -Adaptador-
Patrones Estructurales
Motivación:No obstante, la interfaz de Text (con
operaciones como edit() y draw()) no se corresponde con la declarada por ObjetoGráfico.
Por este motivo, se necesita desarrollar una clase Texto (adaptador) que adapte la clase Text (adaptada) a la interfaz declarada por ObjetoGráfico (objetivo).
Arquitectura de Software
Adapter -Adaptador-
Patrones Estructurales
Arquitectura de Software
Adapter -Adaptador- : Motivación
Patrones Estructurales
Arquitectura de Software
Adaptador: Versión para instancias
Patrones Estructurales
Arquitectura de Software
Adaptador: Versión para clases
Patrones Estructurales
Arquitectura de Software
El Patrón Adaptador
Patrones Estructurales
Arquitectura de Software
Adaptador: Algunas consideraciones
Patrones Estructurales
Nombre: CompuestoFunción:Manejar objetos compuestos como si se
tratasen de un simple, en forma de árbol.También permite manipular
consistentemente los objetos en el árbol, pidiendo que todos los objetos en el árbol tengan una superclase o interfaz común.
Arquitectura de Software
Composite -Compuesto-
Patrones Estructurales
Motivación:
Aplicaciones gráficas. Manipulación de grupos de figuras de manera uniforme.
Arquitectura de Software
Composite -Compuesto-
Patrones Estructurales
Arquitectura de Software
El Patrón Compuesto
Patrones Estructurales
Aplicabilidad: Usar el patrón cuando:Se quieren representar jerarquías
todo/parte de objetos.Se quiere que los clientes ignoren la
diferencia entre composiciones de objetos y objetos individuales. Los clientes tratarán todos los objetos en la estructura compuesta de manera uniforme.
Arquitectura de Software
Composite -Compuesto-
Patrones Estructurales
Arquitectura de Software
El Patrón Compuesto
Patrones Estructurales
Participantes:
AbstractComponent (Grafico).◦ Declara la interfaz de los objetos de la composición.◦ Implementa el comportamiento por defecto de la
interfaz común a todas las clases.◦ Declara las interfaces para acceder y gestionar los
hijos.
Arquitectura de Software
Composite -Compuesto-
Patrones Estructurales
Participantes:
ConcreteComponent (Linea, Rectangulo,…).◦ Representa objetos hoja en la composición. Una
hoja no tiene hijos.◦ Define el comportamiento de los objetos primitivos
en la composición.
Arquitectura de Software
Composite -Compuesto-
Patrones Estructurales
Participantes:
AbstractComposite (Dibujo).◦ Define el comportamiento de los objetos con hijos
en la composición.◦ Almacena componentes hijo.◦ Implementa operaciones relacionadas con los hijos
de la interfaz de AbstractComponent.
Arquitectura de Software
Composite -Compuesto-
Patrones Estructurales
Participantes:
Client (Cliente).◦ Manipula objetos en la composición a través de la
interfaz de AbstractComponent.
Arquitectura de Software
Composite -Compuesto-
Patrones Estructurales
Colaboraciones: Los clientes usan el interfaz de la clase AbstractComponent para interaccionar con los objetos de la estructura compuesta.
Si el objeto es hoja, entonces la petición se cursa directamente.
Si el objeto es un AbstractComposite, entonces normalmente redirige las peticiones a sus objetos hijo, quizá realizando operaciones adicionales antes y/o después de la redirección.
Arquitectura de Software
Composite -Compuesto-
Patrones Estructurales
Consecuencias: El patrón composite: Define jerarquías de objetos primitivos y
compuestos. Cuando un código cliente espera un objeto simple, se puede reemplazar por uno compuesto.
Simplifica el cliente. Se pueden tratar objetos simples y compuestos de manera uniforme.
Facilita añadir nuevos tipos de componente. Puede hacer el diseño demasiado general.
Complicado restringir los tipos de componente de un composite.
Arquitectura de Software
Composite -Compuesto-