SlideShare una empresa de Scribd logo
1 de 47
Descargar para leer sin conexión
Patrones de
Diseño
Octubre de 2012
Profesora: Yaskelly Yedra
Ingeniería de Software
Introducción
 Son diseñados para un problema en especifico,
pero de forma general como para poder
adecuarse a futuros requisitos y problemas.
 Evitan el rediseño en la medida de lo posible.
 Evitan resolver cada problema partiendo de cero.
 Reutilizan soluciones que han sido útiles en el
pasado.
 Patrones recurrentes de clases y comunicación
entre objetos en muchas soluciones de diseño.
Patrón
 Un esquema que se usa para solucionar un
problema.
 El esquema ha sido probado extensivamente, y
ha funcionado. Se tiene experiencia sobre su uso.
 Existen en muchos dominios:
 Novelas y el cine: “héroe trágico”, “comedia
romántica”, etc.
 Arte.
 Ingenierías.
 Arquitectura.
• Christopher Alexander. “A Pattern Language: Towns,
Buildings, Construction”. 1977.
• http://www.patternlanguage.com
PatróndeDiseño
Reutiliza diseños abstractos que no incluyen
detalles de la implementación.
Un patrón es una descripción del problema y la
esencia de su solución, que se puede reutilizar en
casos distintos.
Es una solución adecuada a un problema común.
Asociado a orientación a objetos, pero el principio
general es aplicable a todos los enfoques de
diseño software.
Intención
Motivación
Aplicabilidad (usar el patrón cuando)
Estructura
Participantes
Colaboraciones
Consecuencias
Implementación (factores a tener en cuenta)
Estructura de un
Patrón GoF
Patrones de Creación
Patrones Estructurales
Patrones de Comportamiento
CategoríadePatrones
Cómo se comunican los objetos, cooperan y
distribuyen las responsabilidades para lograr
sus objetivos.
Composición de objetos.
Implica el proceso de instanciar objetos.
Patrones de CreaciónPatronesInvolucrados
1. Prototype o Prototipo
2. Singleton o Instacia única
Especifica los tipos de objetos a crear por medio de una
instancia prototípica, y crea nuevos objetos copiando este
prototipo.
Garantiza que una clase solo tenga una instancia y
proporciona un punto de acceso global a la misma.
Patrones de CreaciónPatronesInvolucrados
4. Abstract Factory o Fábrica abstracta
5. Builder o Constructor
Proporciona una interfaz para crear familias de objetos
relacionados sin especificar sus clases concretas.
Separa la construcción de un objeto complejo de su
representación.
Define una interfaz para crear un objeto, pero deja que
sean las subclases las que decidan que clase instanciar.
3. Factory Method o Método de fabricación
Patrones de Creación
Singleton
IntenciónMotivación
Asegurar que una clase tiene una única instancia y
proporciona un punto de acceso global a dicha instancia
 Hay veces que es importante asegurar que una clase
tenga una sola instancia, por ejemplo:
 Un gestor de ventanas
 Una única cola de impresión
 Un único sistema de ficheros
 Un único fichero de log, o un único repositorio.
 ¿Cómo asegurarlo? una variable global hace el objeto
accesible, pero se puede instanciar varias veces.
 Responsabilidad de la clase misma: actuar sobre
el mensaje de creación de instancias.
Patrones de Creación
Singleton
AplicabilidadEstructura
 Cuando debe haber una sola instancia, y debe ser accesible
a los clientes desde un punto de acceso conocido.
 Cuando la única instancia debe ser extensible mediante
subclasificación, y los clientes deben ser capaces de usar
una instancia extendida sin modificar su código.
Patrones de Creación
Singleton
Participantes
Colaboraciones
Consecuencias
 Acceso controlado a la única instancia.
 Espacio de nombre reducido. Mejora sobre el uso de variables
globales.
 Permite el refinamiento de operaciones y la representación. Se puede
subclasificar de la clase Singleton y configurar la aplicación con una
instancia de esta clase.
 Fácil modificación para permitir un número variable de instancias.
 Más flexible que las operaciones de clase.
Los clientes acceden a la instancia de un Singleton a través de la
operación “Instance”.
Define una operación de clase, llamada “Instance” que
deja a los clientes acceder a la única instancia.
Puede ser responsable de crear su única instancia.
Patrones de Creación
Singleton
Implementación
Patrones EstructuralesCategoríadePatrones
Establecen cómo se componen clases y objetos
para formar estructuras mayores que
implementan nueva funcionalidad.
Los patrones de clase usan la herencia para
componer interfaces o implementaciones (ej.:
Adapter).
Los patrones de objeto, describen maneras de
componer objetos para implementar nueva
funcionalidad.
 Flexibilidad, ya que se puede cambiar la
configuración en tiempo de ejecución.
Patrones EstructuralesPatronesInvolucrados
6. Composite o Composición
Combina objetos en estructuras de árboles para
representar jerarquías de parte-todo.
7. Proxy
Proporciona un sustituto o representante de otro objeto
para controlar el acceso a este.
8. Decorator o Decorador
Añade dinámicamente nuevas responsabilidades a un
objeto. Alternativa de la herencia.
Patrones EstructuralesPatronesInvolucrados
9. Facade o Fachada
10. Bridge o Puente
Proporciona una interfaz unificada para un conjunto de
interfaces de un subsistema.
Desacopla una abstracción de su implementación, de
manera que puedan variar de forma independiente.
Patrones EstructuralesPatronesInvolucrados
11. Adapter o Adaptador
12. Flyweight o Objeto Ligero
Convierte la interfaz de una clase en otra distinta, que es
la que esperan los clientes.
Usa el compartimiento para permitir un gran número de
objetos de grano fino de forma eficiente.
Patrones Estructurales
Facade
Intención
 Proporciona una interfaz unificada para un conjunto de
interfaces de un subsistema.
 Define una interfaz de alto nivel que hace que el
subsistema sea más fácil de usar.
Motivación
 Estructurar un sistema en subsistemas ayuda a reducir su
complejidad.
 Un objetivo típico de diseño es minimizar la comunicación
y dependencias entre subsistemas.
 Un modo de conseguir esto es introducir un objeto
fachada que proporcione una interfaz única y simplificada
a los servicios más generales del subsistema.
Patrones Estructurales
Facade
Motivación
Patrones Estructurales
Facade
Motivación
Patrones EstructuralesAplicabilidadEstructura
Facade
Queramos proporcionar una interfaz simple a un subsistema
complejo.
Sólo los clientes que necesitan más personalización necesitarán ir
más allá de la fachada.
Haya muchas dependencias entre los clientes y las clases que
implementan una abstracción. La fachada desacopla el subsistema
de sus clientes y otros subsistemas (mejora acoplamiento y
portabilidad).
Queramos dividir en capas nuestros subsistemas. La fachada es el
punto de entrada a cada subsistema.
Patrones Estructurales
Participantes
Observaciones
Facade
 Facade (Compiler).
 Sabe qué clases del subsistema son las responsables ante una petición.
 Delega las peticiones de los clientes en los objetos apropiados del
subsistema.
 Clases del Subsistema (Scanner, Parser, ProgramNodeBuilder,
CodeGenerator).
 Implementan la funcionalidad del subsistema.
 Realizan las labores encomendadas por el objeto Facade.
 No tienen referencias al objeto Facade.
Los clientes se comunican en el sistema enviando peticiones
al objeto Facade, que las reenvía a los objetos apropiados.
Los clientes que usan la fachada no tienen que acceder
directamente a los objetos del subsistema.
Patrones Estructurales
Consecuencias
Facade
 Oculta a los clientes los componentes del sistema, haciendo el sistema más
fácil de usar.
 Promueve acoplamiento débil entre el subsistema y sus clientes.
 Elimina dependencias y puede reducir el tiempo de compilación.
 No impide que las aplicaciones usen las clases del subsistema en caso
necesario.
Implementación
 Reducción del acoplamiento cliente-subsistema. Clase facade
abstracta, con clases concretas para las diferentes
implementaciones de un subsistema.
 Clases del subsistema públicas o privadas Uso de espacios
privadas. de nombres en C++.
Patrones Estructurales
Ejemplo: Una fachada para un sistema de compilación
Facade
Patrones Estructurales
Facade
Ejemplo: Una fachada para un sistema de compilación
Patrones Estructurales
Facade
Ejemplo: Una fachada
para un sistema de
compilación
Patrones Estructurales
Facade
Ejemplo: Una fachada
para un sistema de
compilación
Patrones de ComportamientoCategoríadePatrones
Tratan sobre algoritmos y la asignación de
responsabilidades entre objetos.
Describen no sólo patrones de clases y objetos,
sino patrones de comunicación entre ellos.
Caracterizan un flujo de control complejo, difícil
de seguir en tiempo de ejecución.
Permiten que el diseñador se concentre sólo en
cómo interconectar objetos.
Patrones de ComportamientoPatronesInvolucrados
13. Chain of Responsability o Cadena de
Responsabilidad
14. State o Estado
Permite que un objeto modifique su comportamiento
cada vez que cambia su estado interno.
Evita acoplar el emisor de una petición a su receptor, al
dar a más de un objeto la posibilidad de responder a la
petición.
Patrones de ComportamientoPatronesInvolucrados
15. Observer o Observador
16. Iterator o Iterador
Proporciona un modo de acceder secuencialmente a los
elementos de un objeto agregado sin exponer su
representación interna
Define una dependencia de uno a muchos entre objetos,
de forma que cuando un objeto cambia de estado, se
notifican y se actualizan automáticamente todos los
objetos que dependen de él.
Patrones de ComportamientoPatronesInvolucrados
17. Template Method o Plantilla
18. Visitor o Visitante
Define en una operación el esqueleto de un algoritmo
delegando en las subclases algunos de sus pasos.
Representa una operación sobre los elementos de una
estructura de objetos. Permite definir una nueva
operación sin cambiar las clases de los elementos sobre
los que opera.
Patrones de ComportamientoPatronesInvolucrados
20. Memento o Recuerdo
Representa y externaliza el estado interno de un objeto
sin violar su encapsulación
19. Command o Comando
Encapsula una petición en un objeto, permitiendo así
entre otras cosas parametrizar a los clientes con distintas
peticiones, encolar o llevar un registro de las mismas.
21. Strategy o Estrategia
Define una familia de algoritmos, encapsula cada uno de
ellos y los hace intercambiables.
Patrones de ComportamientoPatronesInvolucrados
23. Interpreter
22. Mediator o Mediador
Define un objeto que encapsula cómo interactúan un
conjunto de objetos.
Dado un lenguaje, define una representación de su
gramática junto con un intérprete que usa dicha
representación para interpretar las sentencias del
lenguaje.
Patrones de Comportamiento
Observer
IntenciónMotivación
Mantener consistencia entre objetos relacionados.
No queremos obtener dicha consistencia aumentando el
acoplamiento entre clases.
Ej.: separación de la presentación en GUI de los datos de
aplicación subyacente.
 Dependents
 Publish-Subscribe
También conocido como
Define una dependencia de uno-a-muchos entre objetos,
de forma que cuando un objeto cambie de estado se
notifique y actualicen automáticamente todos los objetos
que dependen de él.
Patrones de Comportamiento
Observer
Motivación
Patrones de Comportamiento
Observer
AplicabilidadEstructura
 Cuando una abstracción tiene dos aspectos y uno depende del otro.
 Cuando un cambio en un objeto requiere cambiar otros, y no sabemos
cuántos hay que cambiar.
 Cuando un objeto debería ser capaz de notificar a otros sin hacer
suposiciones sobre quiénes son dichos objetos (esto es, no queremos
que los objetos estén fuertemente acoplados).
Patrones de Comportamiento
Participantes
 Subject.
 Conoce a sus observadores, que pueden ser un número arbitrario.
 Proporciona un interfaz para añadir y quitar objetos Observer.
 Observer.
 Define un interfaz de actualización para los objetos que deben ser
notificados sobre cambios en un sujeto.
 ConcreteSubject.
 Almacena estado de interés para ConcreteObservers.
 Manda notificaciones a sus observadores cuando su estado cambia.
 ConcreteObserver.
 Mantiene una referencia a objetos ConcreteSubject.
 Almacena el estado que debe ser consistente con el del sujeto.
 Implementa el interfaz de actualización del Observer para mantener su
estado consistente con el del sujeto.
Observer
Patrones de Comportamiento
Colaboraciones
 El ConcreteSubject notifica a sus observadores cada vez que
se produce un cambio que pudiera hacer que el estado de
estos fuese inconsistente con el suyo.
 Después de ser notificado del cambio, un ConcreteObserver
puede pedir al Subject más información.
Observer
Patrones de Comportamiento
Consecuencias
 Permite modificar los sujetos y observadores de manera
independiente.
 Se pueden reutilizar los sujetos sin sus observadores y viceversa.
 Se pueden añadir observadores sin modificar el sujeto u otros
observadores.
 Acoplamiento abstracto entre sujeto y observador. El sujeto no
conoce la clase concreta de ningún observador (el acoplamiento es
mínimo).
 Capacidad de comunicación mediante difusión. La notificación del
sujeto se envía automáticamente a todos los observadores suscritos.
Se pueden añadir y quitar observadores en cualquier momento.
 Actualizaciones inesperadas. Una operación aparentemente
inofensiva sobre el sujeto puede desencadenar una cascada de
cambios en los observadores.
Observer
Patrones de Comportamiento
Implementación
 Correspondencia entre sujetos y observadores.
 Que el sujeto guarde referencias a los observadores a los que debe notificar.
 Observar más de un sujeto.
 Ej.: una hoja de cálculo puede observar más de un origen de datos.
 Extender la interfaz de actualización para que el observador sepa qué sujeto
se ha actualizado (quizá simplemente el sujeto se pase a sí mismo como
parámetro del update()).
 ¿Quién dispara la actualización?
 Las operaciones que cambien el estado del sujeto llaman a Notify().
• Ventaja: los clientes no tienen que hacer nada.
• Inconveniente: no es óptimo si hay varios cambios de estado seguidos.
 Los clientes llaman a Notify():
• Ventaja: se puede optimizar llamando a notify sólo después de varios
• cambios.
• Inconveniente: los clientes tienen la responsabilidad añadida de llamar
• a Notify().
Observer
Patrones de Comportamiento
Implementación
Referencias perdidas a sujetos borrados.
 Una manera de evitarlo es notificar a los observadores cuando se
borra un sujeto.
Asegurarse de que el estado del Sujeto sea consistente
consigo mismo antes de la notificación:
 Hay que tener cuidado con las operaciones heredadas.
Observer
Patrones de Comportamiento
Implementación
 Evitar protocolos específicos del obervador: los modelos
push y pull.
 Las implementaciones de observer suelen hacer que el sujeto envíe
información adicional como parámetro de Update().
 Dos extremos:
• Modelo Push: el sujeto envía información detalla del cambio,
quieran los observadores o no.
Inconveniente: observadores menos reutilizables.
• Modelo Pull: el sujeto no envía nada, y los observadores piden
después los detalles explícitamente.
Inconveniente: puede ser poco eficiente.
 Especificar las modificaciones de interés explícitamente:
 Mejorar la eficiencia haciendo que los observadores registren solo
aquellos eventos que les interesen.
 Los observadores se subscriben a aspectos del sujeto.
Observer
Patrones de Comportamiento
Implementación
Encapsular la semántica de las operaciones
complejas.
 Si la relación de dependencia entre sujetos y
observadores es compleja, puede ser necesario un
objeto intermedio para la gestión de cambios
(ChangeManager).
 Minimizar el trabajo necesario para que los
observadores reflejen los cambios en el sujeto.
 Ej.: si varios sujetos han de cambiarse, asegurarse de
que se notifique a los observadores sólo después del
cambio en el último sujeto.
Observer
Patrones de Comportamiento
Implementación
Observer
Patrones de Comportamiento
Usos conocidos
Observer
Sistemas de eventos en Java (observer=listener)
 AWT/Swing
 Javabeans
MVC en el sistema de ventanas de Smalltalk
 Model=Subject
 View=Observer
 Controller=Cualquier objeto que cambie el estado de
Subject
MVC en entornos web (J2EE)
 Model=EJB
 View=JSP
 Controller=servlet
Conclusiones
Diseño
de Patrón Patrones
GoF
De
Creación
De
Comportamiento
Patrones
Estructurales
Conclusiones
 Los patrones ayudan a generar software
“maleable” (software que soporta y facilita el
cambio, la reutilización y la mejora).
 Cada patrón describe la solución a problemas
que se repiten una y otra vez en nuestro entorno,
de forma que se puede usar esa solución todas
las veces que haga falta.
 Los patrones de diseño capturan el conocimiento
que tienen los expertos a la hora de diseñar.
 Los patrones de diseño son guías, no reglas
rigurosas.
Bibliografía
 “Design patterns, elements of reusable object
oriented software”. Gamma, Helm, Jonhnson,
Vlissides. Addison Wesley, 1995 (traducido al
español en 2003).

Más contenido relacionado

La actualidad más candente

Herencia - Programación Orientada a Objetos
Herencia - Programación Orientada a ObjetosHerencia - Programación Orientada a Objetos
Herencia - Programación Orientada a ObjetosMario Villaseñor
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Giancarlo Aguilar
 
2 1 vistas arquitectonicas
2 1 vistas arquitectonicas2 1 vistas arquitectonicas
2 1 vistas arquitectonicaslandeta_p
 
C4model - Arquitectura de Software
C4model - Arquitectura de SoftwareC4model - Arquitectura de Software
C4model - Arquitectura de SoftwareRene Guaman-Quinche
 
Modelo Orientado A Objetos
Modelo Orientado A ObjetosModelo Orientado A Objetos
Modelo Orientado A Objetosjose_rob
 
Metodología orientadas a objetos
Metodología orientadas a objetosMetodología orientadas a objetos
Metodología orientadas a objetosyolandacando1
 
Lenguajes de Descripción de Arquitecturas
Lenguajes de Descripción de Arquitecturas Lenguajes de Descripción de Arquitecturas
Lenguajes de Descripción de Arquitecturas Shelisse De la Cruz
 
Diagramas de paquetes
Diagramas de paquetesDiagramas de paquetes
Diagramas de paquetesMoises Cruz
 
Diagramas UML: Componentes y despliegue
Diagramas UML: Componentes y despliegueDiagramas UML: Componentes y despliegue
Diagramas UML: Componentes y desplieguejoshell
 
Los 13 diagramas UML y sus componentes
Los 13 diagramas UML y sus componentesLos 13 diagramas UML y sus componentes
Los 13 diagramas UML y sus componentesVictor Escamilla
 
Arquitectura flujo de datos(filtros y tuberías)
Arquitectura flujo de datos(filtros y tuberías)Arquitectura flujo de datos(filtros y tuberías)
Arquitectura flujo de datos(filtros y tuberías)katherine revelo gomez
 
Diagramas de caso de uso
Diagramas de caso de usoDiagramas de caso de uso
Diagramas de caso de usoTensor
 

La actualidad más candente (20)

Herencia - Programación Orientada a Objetos
Herencia - Programación Orientada a ObjetosHerencia - Programación Orientada a Objetos
Herencia - Programación Orientada a Objetos
 
Modelo 4+1
Modelo 4+1Modelo 4+1
Modelo 4+1
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.
 
2 1 vistas arquitectonicas
2 1 vistas arquitectonicas2 1 vistas arquitectonicas
2 1 vistas arquitectonicas
 
C4model - Arquitectura de Software
C4model - Arquitectura de SoftwareC4model - Arquitectura de Software
C4model - Arquitectura de Software
 
Vista lógica
Vista lógicaVista lógica
Vista lógica
 
Modelo Orientado A Objetos
Modelo Orientado A ObjetosModelo Orientado A Objetos
Modelo Orientado A Objetos
 
Diagramas de clases
Diagramas de clasesDiagramas de clases
Diagramas de clases
 
Metodología orientadas a objetos
Metodología orientadas a objetosMetodología orientadas a objetos
Metodología orientadas a objetos
 
PROGRAMACIÓN ORIENTADA A OBJETOS
PROGRAMACIÓN ORIENTADA A OBJETOSPROGRAMACIÓN ORIENTADA A OBJETOS
PROGRAMACIÓN ORIENTADA A OBJETOS
 
Lenguajes de Descripción de Arquitecturas
Lenguajes de Descripción de Arquitecturas Lenguajes de Descripción de Arquitecturas
Lenguajes de Descripción de Arquitecturas
 
UML
UMLUML
UML
 
Diagramas de paquetes
Diagramas de paquetesDiagramas de paquetes
Diagramas de paquetes
 
Diagramas UML: Componentes y despliegue
Diagramas UML: Componentes y despliegueDiagramas UML: Componentes y despliegue
Diagramas UML: Componentes y despliegue
 
Los 13 diagramas UML y sus componentes
Los 13 diagramas UML y sus componentesLos 13 diagramas UML y sus componentes
Los 13 diagramas UML y sus componentes
 
Aplicaciones distribuidas
Aplicaciones distribuidasAplicaciones distribuidas
Aplicaciones distribuidas
 
Principios diseño del software
Principios diseño del software Principios diseño del software
Principios diseño del software
 
Metodologiasad 1
Metodologiasad 1Metodologiasad 1
Metodologiasad 1
 
Arquitectura flujo de datos(filtros y tuberías)
Arquitectura flujo de datos(filtros y tuberías)Arquitectura flujo de datos(filtros y tuberías)
Arquitectura flujo de datos(filtros y tuberías)
 
Diagramas de caso de uso
Diagramas de caso de usoDiagramas de caso de uso
Diagramas de caso de uso
 

Destacado

Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de softwareIker Canarias
 
Introducción a los Patrones de diseño de software
Introducción a los Patrones de diseño de softwareIntroducción a los Patrones de diseño de software
Introducción a los Patrones de diseño de softwareYazmin RuBo
 
Diseño de Patrones (Fachada)
Diseño de Patrones (Fachada)Diseño de Patrones (Fachada)
Diseño de Patrones (Fachada)Fanny Ruiz
 
Patrones bridge puente
Patrones bridge puentePatrones bridge puente
Patrones bridge puenteMario Cabrera
 
Arquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseñoArquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseñoGermania Rodriguez
 
Generador de Patrones de Diseño (GEPADI)
Generador de Patrones de Diseño (GEPADI)Generador de Patrones de Diseño (GEPADI)
Generador de Patrones de Diseño (GEPADI)Yaskelly Yedra
 
Patrones De DiseñO
Patrones De DiseñOPatrones De DiseñO
Patrones De DiseñOgueste39de6
 
Builder - Design Pattern - GoF
Builder - Design Pattern - GoFBuilder - Design Pattern - GoF
Builder - Design Pattern - GoFjlrvpuma
 
Patrones de diseño de software facade e iterator
Patrones de diseño de software facade e iteratorPatrones de diseño de software facade e iterator
Patrones de diseño de software facade e iteratorPietro Doninelli
 
Cadena de responsabilidad.chaine of responsability
Cadena de responsabilidad.chaine of responsabilityCadena de responsabilidad.chaine of responsability
Cadena de responsabilidad.chaine of responsabilityUTCH
 
Patrones de Diseño y Frameworks
Patrones de Diseño y FrameworksPatrones de Diseño y Frameworks
Patrones de Diseño y FrameworksDaniel Cam Urquizo
 
Patrones de diseño en POO
Patrones de diseño en POOPatrones de diseño en POO
Patrones de diseño en POOEl Taller Web
 
Ccna3 cap8 (1)
Ccna3 cap8 (1)Ccna3 cap8 (1)
Ccna3 cap8 (1)José Mora
 
Facade - Design Pattern - GoF
Facade - Design Pattern - GoFFacade - Design Pattern - GoF
Facade - Design Pattern - GoFjlrvpuma
 
Artesanos de software: El uso e implementación de patrones de diseño en siste...
Artesanos de software: El uso e implementación de patrones de diseño en siste...Artesanos de software: El uso e implementación de patrones de diseño en siste...
Artesanos de software: El uso e implementación de patrones de diseño en siste...Software Guru
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño IIjjegonzalezf
 
patrones de diseño web.
  patrones de diseño web.   patrones de diseño web.
patrones de diseño web. Diana Luna
 

Destacado (20)

Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de software
 
Introducción a los Patrones de diseño de software
Introducción a los Patrones de diseño de softwareIntroducción a los Patrones de diseño de software
Introducción a los Patrones de diseño de software
 
Diseño de Patrones (Fachada)
Diseño de Patrones (Fachada)Diseño de Patrones (Fachada)
Diseño de Patrones (Fachada)
 
Patrones bridge puente
Patrones bridge puentePatrones bridge puente
Patrones bridge puente
 
Arquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseñoArquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseño
 
Patrones diseño de software
Patrones diseño de softwarePatrones diseño de software
Patrones diseño de software
 
Generador de Patrones de Diseño (GEPADI)
Generador de Patrones de Diseño (GEPADI)Generador de Patrones de Diseño (GEPADI)
Generador de Patrones de Diseño (GEPADI)
 
Patrones De DiseñO
Patrones De DiseñOPatrones De DiseñO
Patrones De DiseñO
 
Builder - Design Pattern - GoF
Builder - Design Pattern - GoFBuilder - Design Pattern - GoF
Builder - Design Pattern - GoF
 
Patron fachada...
Patron fachada...Patron fachada...
Patron fachada...
 
Patrones de diseño de software facade e iterator
Patrones de diseño de software facade e iteratorPatrones de diseño de software facade e iterator
Patrones de diseño de software facade e iterator
 
Cadena de responsabilidad.chaine of responsability
Cadena de responsabilidad.chaine of responsabilityCadena de responsabilidad.chaine of responsability
Cadena de responsabilidad.chaine of responsability
 
Patrones de Diseño y Frameworks
Patrones de Diseño y FrameworksPatrones de Diseño y Frameworks
Patrones de Diseño y Frameworks
 
Patrones de diseño en POO
Patrones de diseño en POOPatrones de diseño en POO
Patrones de diseño en POO
 
Ccna3 cap8 (1)
Ccna3 cap8 (1)Ccna3 cap8 (1)
Ccna3 cap8 (1)
 
Facade - Design Pattern - GoF
Facade - Design Pattern - GoFFacade - Design Pattern - GoF
Facade - Design Pattern - GoF
 
Artesanos de software: El uso e implementación de patrones de diseño en siste...
Artesanos de software: El uso e implementación de patrones de diseño en siste...Artesanos de software: El uso e implementación de patrones de diseño en siste...
Artesanos de software: El uso e implementación de patrones de diseño en siste...
 
Decorator
DecoratorDecorator
Decorator
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño II
 
patrones de diseño web.
  patrones de diseño web.   patrones de diseño web.
patrones de diseño web.
 

Similar a Patrones de diseño de GoF

Patrones de diseño - Henry Vallejo
Patrones de diseño - Henry VallejoPatrones de diseño - Henry Vallejo
Patrones de diseño - Henry Vallejo2008PA2Info3
 
Patrones de diseño - Daniel E. Jaramillo
Patrones de diseño - Daniel E. JaramilloPatrones de diseño - Daniel E. Jaramillo
Patrones de diseño - Daniel E. Jaramillo2008PA2Info3
 
Desarrollo basado en patrones
Desarrollo basado en patronesDesarrollo basado en patrones
Desarrollo basado en patronesMarvin Zumbado
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseñoIsrael Rey
 
Patrones de diseño - Andrés Dorado
Patrones de diseño - Andrés DoradoPatrones de diseño - Andrés Dorado
Patrones de diseño - Andrés Dorado2008PA2Info3
 
Patrones de diseño [DdA-2]
Patrones de diseño [DdA-2]Patrones de diseño [DdA-2]
Patrones de diseño [DdA-2]Karloz Dz
 
Abstract factory. presentación
Abstract factory. presentaciónAbstract factory. presentación
Abstract factory. presentaciónavidal020
 
Patrones de Diseño de Software
Patrones de Diseño de SoftwarePatrones de Diseño de Software
Patrones de Diseño de SoftwareWilliam A. Molina
 
Implementación y adaptación de patrones de diseño
Implementación y adaptación de patrones de diseñoImplementación y adaptación de patrones de diseño
Implementación y adaptación de patrones de diseñoJu Pe
 
Msdn Webcast InyeccióN De Dependencias Con Spring Framework
Msdn Webcast   InyeccióN De Dependencias Con Spring FrameworkMsdn Webcast   InyeccióN De Dependencias Con Spring Framework
Msdn Webcast InyeccióN De Dependencias Con Spring FrameworkGabriel Oliva
 

Similar a Patrones de diseño de GoF (20)

Patrones
PatronesPatrones
Patrones
 
Patrones de diseño - Henry Vallejo
Patrones de diseño - Henry VallejoPatrones de diseño - Henry Vallejo
Patrones de diseño - Henry Vallejo
 
Patrones de diseño - Daniel E. Jaramillo
Patrones de diseño - Daniel E. JaramilloPatrones de diseño - Daniel E. Jaramillo
Patrones de diseño - Daniel E. Jaramillo
 
Desarrollo basado en patrones
Desarrollo basado en patronesDesarrollo basado en patrones
Desarrollo basado en patrones
 
INFOGRAFIA.pdf
INFOGRAFIA.pdfINFOGRAFIA.pdf
INFOGRAFIA.pdf
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
Patron de diseño
Patron de diseñoPatron de diseño
Patron de diseño
 
Abstract Factory
Abstract FactoryAbstract Factory
Abstract Factory
 
Patrones de diseño - Andrés Dorado
Patrones de diseño - Andrés DoradoPatrones de diseño - Andrés Dorado
Patrones de diseño - Andrés Dorado
 
Presentacion Patrones Creacionales
Presentacion Patrones CreacionalesPresentacion Patrones Creacionales
Presentacion Patrones Creacionales
 
Patrones de diseño [DdA-2]
Patrones de diseño [DdA-2]Patrones de diseño [DdA-2]
Patrones de diseño [DdA-2]
 
Abstract factory. presentación
Abstract factory. presentaciónAbstract factory. presentación
Abstract factory. presentación
 
Transparencias_Patrones.ppt
Transparencias_Patrones.pptTransparencias_Patrones.ppt
Transparencias_Patrones.ppt
 
Patrones de Diseño de Software
Patrones de Diseño de SoftwarePatrones de Diseño de Software
Patrones de Diseño de Software
 
Abstract Factory
Abstract FactoryAbstract Factory
Abstract Factory
 
Implementación y adaptación de patrones de diseño
Implementación y adaptación de patrones de diseñoImplementación y adaptación de patrones de diseño
Implementación y adaptación de patrones de diseño
 
Msdn Webcast InyeccióN De Dependencias Con Spring Framework
Msdn Webcast   InyeccióN De Dependencias Con Spring FrameworkMsdn Webcast   InyeccióN De Dependencias Con Spring Framework
Msdn Webcast InyeccióN De Dependencias Con Spring Framework
 
Patrones de Diseño
Patrones de DiseñoPatrones de Diseño
Patrones de Diseño
 
Abstract factory
Abstract factoryAbstract factory
Abstract factory
 

Más de Yaskelly Yedra

Es una aplicación de software que automatiza e integra tanto los procesos de...
Es una aplicación de software que  automatiza e integra tanto los procesos de...Es una aplicación de software que  automatiza e integra tanto los procesos de...
Es una aplicación de software que automatiza e integra tanto los procesos de...Yaskelly Yedra
 
Manual de descripcion de cargos para una empresa de desarrollo de software
Manual de descripcion de cargos para una empresa de desarrollo de softwareManual de descripcion de cargos para una empresa de desarrollo de software
Manual de descripcion de cargos para una empresa de desarrollo de softwareYaskelly Yedra
 
Manual de sistema de una Intranet basada en multiplataforma para la toma de d...
Manual de sistema de una Intranet basada en multiplataforma para la toma de d...Manual de sistema de una Intranet basada en multiplataforma para la toma de d...
Manual de sistema de una Intranet basada en multiplataforma para la toma de d...Yaskelly Yedra
 
Manual del usuario de una Intranet multiplataforma para la toma de decisión
Manual del usuario de una Intranet multiplataforma para la toma de decisiónManual del usuario de una Intranet multiplataforma para la toma de decisión
Manual del usuario de una Intranet multiplataforma para la toma de decisiónYaskelly Yedra
 
Ciclo de vida de los sistemas de informacion
Ciclo de vida de los sistemas de informacionCiclo de vida de los sistemas de informacion
Ciclo de vida de los sistemas de informacionYaskelly Yedra
 
Intranet basada en multiplataforma para el apoyo a la toma de decisiones
Intranet basada en multiplataforma para el apoyo a la toma de decisionesIntranet basada en multiplataforma para el apoyo a la toma de decisiones
Intranet basada en multiplataforma para el apoyo a la toma de decisionesYaskelly Yedra
 
Red GSM de Telefonía Básica para el Estado Zulia
Red GSM de Telefonía Básica para el Estado ZuliaRed GSM de Telefonía Básica para el Estado Zulia
Red GSM de Telefonía Básica para el Estado ZuliaYaskelly Yedra
 
Titulo en Ciencias de la Computación
Titulo en Ciencias de la Computación Titulo en Ciencias de la Computación
Titulo en Ciencias de la Computación Yaskelly Yedra
 
Categorización de usuarios de Twitter
Categorización de usuarios de TwitterCategorización de usuarios de Twitter
Categorización de usuarios de TwitterYaskelly Yedra
 
Red GSM de Telefonía Básica para el Estado Zulia
Red GSM de Telefonía Básica para el Estado ZuliaRed GSM de Telefonía Básica para el Estado Zulia
Red GSM de Telefonía Básica para el Estado ZuliaYaskelly Yedra
 
UML. Un análisis comparativo para la diagramación de software
UML. Un análisis comparativo para la diagramación de softwareUML. Un análisis comparativo para la diagramación de software
UML. Un análisis comparativo para la diagramación de softwareYaskelly Yedra
 
UML. un analisis comparativo para la diagramación de software
UML.  un analisis comparativo para la diagramación de softwareUML.  un analisis comparativo para la diagramación de software
UML. un analisis comparativo para la diagramación de softwareYaskelly Yedra
 
Metodología para el desarrollo de portales de gobierno electrónico bajo el en...
Metodología para el desarrollo de portales de gobierno electrónico bajo el en...Metodología para el desarrollo de portales de gobierno electrónico bajo el en...
Metodología para el desarrollo de portales de gobierno electrónico bajo el en...Yaskelly Yedra
 
Formato de minuta de reunión
Formato de minuta de reuniónFormato de minuta de reunión
Formato de minuta de reuniónYaskelly Yedra
 
Reglamento para la presentacion de trabajos en la Universidad del Zulia
Reglamento para la presentacion de trabajos en la Universidad del ZuliaReglamento para la presentacion de trabajos en la Universidad del Zulia
Reglamento para la presentacion de trabajos en la Universidad del ZuliaYaskelly Yedra
 
Introducción a UML y Diagrama de Casos de Uso
Introducción a UML y Diagrama de Casos de UsoIntroducción a UML y Diagrama de Casos de Uso
Introducción a UML y Diagrama de Casos de UsoYaskelly Yedra
 
La organización como un teatro: la tecnología y sistemas de información como ...
La organización como un teatro: la tecnología y sistemas de información como ...La organización como un teatro: la tecnología y sistemas de información como ...
La organización como un teatro: la tecnología y sistemas de información como ...Yaskelly Yedra
 
Sistemas transparente para gobierno electrónico eficientes
Sistemas transparente para gobierno electrónico eficientesSistemas transparente para gobierno electrónico eficientes
Sistemas transparente para gobierno electrónico eficientesYaskelly Yedra
 
Impacto de las tecnologías de telecomunicaciones en los patrones de comunicac...
Impacto de las tecnologías de telecomunicaciones en los patrones de comunicac...Impacto de las tecnologías de telecomunicaciones en los patrones de comunicac...
Impacto de las tecnologías de telecomunicaciones en los patrones de comunicac...Yaskelly Yedra
 
Modelos de desarrollo de aplicaciones web
Modelos de desarrollo de aplicaciones webModelos de desarrollo de aplicaciones web
Modelos de desarrollo de aplicaciones webYaskelly Yedra
 

Más de Yaskelly Yedra (20)

Es una aplicación de software que automatiza e integra tanto los procesos de...
Es una aplicación de software que  automatiza e integra tanto los procesos de...Es una aplicación de software que  automatiza e integra tanto los procesos de...
Es una aplicación de software que automatiza e integra tanto los procesos de...
 
Manual de descripcion de cargos para una empresa de desarrollo de software
Manual de descripcion de cargos para una empresa de desarrollo de softwareManual de descripcion de cargos para una empresa de desarrollo de software
Manual de descripcion de cargos para una empresa de desarrollo de software
 
Manual de sistema de una Intranet basada en multiplataforma para la toma de d...
Manual de sistema de una Intranet basada en multiplataforma para la toma de d...Manual de sistema de una Intranet basada en multiplataforma para la toma de d...
Manual de sistema de una Intranet basada en multiplataforma para la toma de d...
 
Manual del usuario de una Intranet multiplataforma para la toma de decisión
Manual del usuario de una Intranet multiplataforma para la toma de decisiónManual del usuario de una Intranet multiplataforma para la toma de decisión
Manual del usuario de una Intranet multiplataforma para la toma de decisión
 
Ciclo de vida de los sistemas de informacion
Ciclo de vida de los sistemas de informacionCiclo de vida de los sistemas de informacion
Ciclo de vida de los sistemas de informacion
 
Intranet basada en multiplataforma para el apoyo a la toma de decisiones
Intranet basada en multiplataforma para el apoyo a la toma de decisionesIntranet basada en multiplataforma para el apoyo a la toma de decisiones
Intranet basada en multiplataforma para el apoyo a la toma de decisiones
 
Red GSM de Telefonía Básica para el Estado Zulia
Red GSM de Telefonía Básica para el Estado ZuliaRed GSM de Telefonía Básica para el Estado Zulia
Red GSM de Telefonía Básica para el Estado Zulia
 
Titulo en Ciencias de la Computación
Titulo en Ciencias de la Computación Titulo en Ciencias de la Computación
Titulo en Ciencias de la Computación
 
Categorización de usuarios de Twitter
Categorización de usuarios de TwitterCategorización de usuarios de Twitter
Categorización de usuarios de Twitter
 
Red GSM de Telefonía Básica para el Estado Zulia
Red GSM de Telefonía Básica para el Estado ZuliaRed GSM de Telefonía Básica para el Estado Zulia
Red GSM de Telefonía Básica para el Estado Zulia
 
UML. Un análisis comparativo para la diagramación de software
UML. Un análisis comparativo para la diagramación de softwareUML. Un análisis comparativo para la diagramación de software
UML. Un análisis comparativo para la diagramación de software
 
UML. un analisis comparativo para la diagramación de software
UML.  un analisis comparativo para la diagramación de softwareUML.  un analisis comparativo para la diagramación de software
UML. un analisis comparativo para la diagramación de software
 
Metodología para el desarrollo de portales de gobierno electrónico bajo el en...
Metodología para el desarrollo de portales de gobierno electrónico bajo el en...Metodología para el desarrollo de portales de gobierno electrónico bajo el en...
Metodología para el desarrollo de portales de gobierno electrónico bajo el en...
 
Formato de minuta de reunión
Formato de minuta de reuniónFormato de minuta de reunión
Formato de minuta de reunión
 
Reglamento para la presentacion de trabajos en la Universidad del Zulia
Reglamento para la presentacion de trabajos en la Universidad del ZuliaReglamento para la presentacion de trabajos en la Universidad del Zulia
Reglamento para la presentacion de trabajos en la Universidad del Zulia
 
Introducción a UML y Diagrama de Casos de Uso
Introducción a UML y Diagrama de Casos de UsoIntroducción a UML y Diagrama de Casos de Uso
Introducción a UML y Diagrama de Casos de Uso
 
La organización como un teatro: la tecnología y sistemas de información como ...
La organización como un teatro: la tecnología y sistemas de información como ...La organización como un teatro: la tecnología y sistemas de información como ...
La organización como un teatro: la tecnología y sistemas de información como ...
 
Sistemas transparente para gobierno electrónico eficientes
Sistemas transparente para gobierno electrónico eficientesSistemas transparente para gobierno electrónico eficientes
Sistemas transparente para gobierno electrónico eficientes
 
Impacto de las tecnologías de telecomunicaciones en los patrones de comunicac...
Impacto de las tecnologías de telecomunicaciones en los patrones de comunicac...Impacto de las tecnologías de telecomunicaciones en los patrones de comunicac...
Impacto de las tecnologías de telecomunicaciones en los patrones de comunicac...
 
Modelos de desarrollo de aplicaciones web
Modelos de desarrollo de aplicaciones webModelos de desarrollo de aplicaciones web
Modelos de desarrollo de aplicaciones web
 

Patrones de diseño de GoF

  • 1. Patrones de Diseño Octubre de 2012 Profesora: Yaskelly Yedra Ingeniería de Software
  • 2. Introducción  Son diseñados para un problema en especifico, pero de forma general como para poder adecuarse a futuros requisitos y problemas.  Evitan el rediseño en la medida de lo posible.  Evitan resolver cada problema partiendo de cero.  Reutilizan soluciones que han sido útiles en el pasado.  Patrones recurrentes de clases y comunicación entre objetos en muchas soluciones de diseño.
  • 3. Patrón  Un esquema que se usa para solucionar un problema.  El esquema ha sido probado extensivamente, y ha funcionado. Se tiene experiencia sobre su uso.  Existen en muchos dominios:  Novelas y el cine: “héroe trágico”, “comedia romántica”, etc.  Arte.  Ingenierías.  Arquitectura. • Christopher Alexander. “A Pattern Language: Towns, Buildings, Construction”. 1977. • http://www.patternlanguage.com
  • 4. PatróndeDiseño Reutiliza diseños abstractos que no incluyen detalles de la implementación. Un patrón es una descripción del problema y la esencia de su solución, que se puede reutilizar en casos distintos. Es una solución adecuada a un problema común. Asociado a orientación a objetos, pero el principio general es aplicable a todos los enfoques de diseño software.
  • 5. Intención Motivación Aplicabilidad (usar el patrón cuando) Estructura Participantes Colaboraciones Consecuencias Implementación (factores a tener en cuenta) Estructura de un Patrón GoF
  • 6. Patrones de Creación Patrones Estructurales Patrones de Comportamiento CategoríadePatrones Cómo se comunican los objetos, cooperan y distribuyen las responsabilidades para lograr sus objetivos. Composición de objetos. Implica el proceso de instanciar objetos.
  • 7. Patrones de CreaciónPatronesInvolucrados 1. Prototype o Prototipo 2. Singleton o Instacia única Especifica los tipos de objetos a crear por medio de una instancia prototípica, y crea nuevos objetos copiando este prototipo. Garantiza que una clase solo tenga una instancia y proporciona un punto de acceso global a la misma.
  • 8. Patrones de CreaciónPatronesInvolucrados 4. Abstract Factory o Fábrica abstracta 5. Builder o Constructor Proporciona una interfaz para crear familias de objetos relacionados sin especificar sus clases concretas. Separa la construcción de un objeto complejo de su representación. Define una interfaz para crear un objeto, pero deja que sean las subclases las que decidan que clase instanciar. 3. Factory Method o Método de fabricación
  • 9. Patrones de Creación Singleton IntenciónMotivación Asegurar que una clase tiene una única instancia y proporciona un punto de acceso global a dicha instancia  Hay veces que es importante asegurar que una clase tenga una sola instancia, por ejemplo:  Un gestor de ventanas  Una única cola de impresión  Un único sistema de ficheros  Un único fichero de log, o un único repositorio.  ¿Cómo asegurarlo? una variable global hace el objeto accesible, pero se puede instanciar varias veces.  Responsabilidad de la clase misma: actuar sobre el mensaje de creación de instancias.
  • 10. Patrones de Creación Singleton AplicabilidadEstructura  Cuando debe haber una sola instancia, y debe ser accesible a los clientes desde un punto de acceso conocido.  Cuando la única instancia debe ser extensible mediante subclasificación, y los clientes deben ser capaces de usar una instancia extendida sin modificar su código.
  • 11. Patrones de Creación Singleton Participantes Colaboraciones Consecuencias  Acceso controlado a la única instancia.  Espacio de nombre reducido. Mejora sobre el uso de variables globales.  Permite el refinamiento de operaciones y la representación. Se puede subclasificar de la clase Singleton y configurar la aplicación con una instancia de esta clase.  Fácil modificación para permitir un número variable de instancias.  Más flexible que las operaciones de clase. Los clientes acceden a la instancia de un Singleton a través de la operación “Instance”. Define una operación de clase, llamada “Instance” que deja a los clientes acceder a la única instancia. Puede ser responsable de crear su única instancia.
  • 13. Patrones EstructuralesCategoríadePatrones Establecen cómo se componen clases y objetos para formar estructuras mayores que implementan nueva funcionalidad. Los patrones de clase usan la herencia para componer interfaces o implementaciones (ej.: Adapter). Los patrones de objeto, describen maneras de componer objetos para implementar nueva funcionalidad.  Flexibilidad, ya que se puede cambiar la configuración en tiempo de ejecución.
  • 14. Patrones EstructuralesPatronesInvolucrados 6. Composite o Composición Combina objetos en estructuras de árboles para representar jerarquías de parte-todo. 7. Proxy Proporciona un sustituto o representante de otro objeto para controlar el acceso a este. 8. Decorator o Decorador Añade dinámicamente nuevas responsabilidades a un objeto. Alternativa de la herencia.
  • 15. Patrones EstructuralesPatronesInvolucrados 9. Facade o Fachada 10. Bridge o Puente Proporciona una interfaz unificada para un conjunto de interfaces de un subsistema. Desacopla una abstracción de su implementación, de manera que puedan variar de forma independiente.
  • 16. Patrones EstructuralesPatronesInvolucrados 11. Adapter o Adaptador 12. Flyweight o Objeto Ligero Convierte la interfaz de una clase en otra distinta, que es la que esperan los clientes. Usa el compartimiento para permitir un gran número de objetos de grano fino de forma eficiente.
  • 17. Patrones Estructurales Facade Intención  Proporciona una interfaz unificada para un conjunto de interfaces de un subsistema.  Define una interfaz de alto nivel que hace que el subsistema sea más fácil de usar. Motivación  Estructurar un sistema en subsistemas ayuda a reducir su complejidad.  Un objetivo típico de diseño es minimizar la comunicación y dependencias entre subsistemas.  Un modo de conseguir esto es introducir un objeto fachada que proporcione una interfaz única y simplificada a los servicios más generales del subsistema.
  • 20. Patrones EstructuralesAplicabilidadEstructura Facade Queramos proporcionar una interfaz simple a un subsistema complejo. Sólo los clientes que necesitan más personalización necesitarán ir más allá de la fachada. Haya muchas dependencias entre los clientes y las clases que implementan una abstracción. La fachada desacopla el subsistema de sus clientes y otros subsistemas (mejora acoplamiento y portabilidad). Queramos dividir en capas nuestros subsistemas. La fachada es el punto de entrada a cada subsistema.
  • 21. Patrones Estructurales Participantes Observaciones Facade  Facade (Compiler).  Sabe qué clases del subsistema son las responsables ante una petición.  Delega las peticiones de los clientes en los objetos apropiados del subsistema.  Clases del Subsistema (Scanner, Parser, ProgramNodeBuilder, CodeGenerator).  Implementan la funcionalidad del subsistema.  Realizan las labores encomendadas por el objeto Facade.  No tienen referencias al objeto Facade. Los clientes se comunican en el sistema enviando peticiones al objeto Facade, que las reenvía a los objetos apropiados. Los clientes que usan la fachada no tienen que acceder directamente a los objetos del subsistema.
  • 22. Patrones Estructurales Consecuencias Facade  Oculta a los clientes los componentes del sistema, haciendo el sistema más fácil de usar.  Promueve acoplamiento débil entre el subsistema y sus clientes.  Elimina dependencias y puede reducir el tiempo de compilación.  No impide que las aplicaciones usen las clases del subsistema en caso necesario. Implementación  Reducción del acoplamiento cliente-subsistema. Clase facade abstracta, con clases concretas para las diferentes implementaciones de un subsistema.  Clases del subsistema públicas o privadas Uso de espacios privadas. de nombres en C++.
  • 23. Patrones Estructurales Ejemplo: Una fachada para un sistema de compilación Facade
  • 24. Patrones Estructurales Facade Ejemplo: Una fachada para un sistema de compilación
  • 25. Patrones Estructurales Facade Ejemplo: Una fachada para un sistema de compilación
  • 26. Patrones Estructurales Facade Ejemplo: Una fachada para un sistema de compilación
  • 27. Patrones de ComportamientoCategoríadePatrones Tratan sobre algoritmos y la asignación de responsabilidades entre objetos. Describen no sólo patrones de clases y objetos, sino patrones de comunicación entre ellos. Caracterizan un flujo de control complejo, difícil de seguir en tiempo de ejecución. Permiten que el diseñador se concentre sólo en cómo interconectar objetos.
  • 28. Patrones de ComportamientoPatronesInvolucrados 13. Chain of Responsability o Cadena de Responsabilidad 14. State o Estado Permite que un objeto modifique su comportamiento cada vez que cambia su estado interno. Evita acoplar el emisor de una petición a su receptor, al dar a más de un objeto la posibilidad de responder a la petición.
  • 29. Patrones de ComportamientoPatronesInvolucrados 15. Observer o Observador 16. Iterator o Iterador Proporciona un modo de acceder secuencialmente a los elementos de un objeto agregado sin exponer su representación interna Define una dependencia de uno a muchos entre objetos, de forma que cuando un objeto cambia de estado, se notifican y se actualizan automáticamente todos los objetos que dependen de él.
  • 30. Patrones de ComportamientoPatronesInvolucrados 17. Template Method o Plantilla 18. Visitor o Visitante Define en una operación el esqueleto de un algoritmo delegando en las subclases algunos de sus pasos. Representa una operación sobre los elementos de una estructura de objetos. Permite definir una nueva operación sin cambiar las clases de los elementos sobre los que opera.
  • 31. Patrones de ComportamientoPatronesInvolucrados 20. Memento o Recuerdo Representa y externaliza el estado interno de un objeto sin violar su encapsulación 19. Command o Comando Encapsula una petición en un objeto, permitiendo así entre otras cosas parametrizar a los clientes con distintas peticiones, encolar o llevar un registro de las mismas. 21. Strategy o Estrategia Define una familia de algoritmos, encapsula cada uno de ellos y los hace intercambiables.
  • 32. Patrones de ComportamientoPatronesInvolucrados 23. Interpreter 22. Mediator o Mediador Define un objeto que encapsula cómo interactúan un conjunto de objetos. Dado un lenguaje, define una representación de su gramática junto con un intérprete que usa dicha representación para interpretar las sentencias del lenguaje.
  • 33. Patrones de Comportamiento Observer IntenciónMotivación Mantener consistencia entre objetos relacionados. No queremos obtener dicha consistencia aumentando el acoplamiento entre clases. Ej.: separación de la presentación en GUI de los datos de aplicación subyacente.  Dependents  Publish-Subscribe También conocido como Define una dependencia de uno-a-muchos entre objetos, de forma que cuando un objeto cambie de estado se notifique y actualicen automáticamente todos los objetos que dependen de él.
  • 35. Patrones de Comportamiento Observer AplicabilidadEstructura  Cuando una abstracción tiene dos aspectos y uno depende del otro.  Cuando un cambio en un objeto requiere cambiar otros, y no sabemos cuántos hay que cambiar.  Cuando un objeto debería ser capaz de notificar a otros sin hacer suposiciones sobre quiénes son dichos objetos (esto es, no queremos que los objetos estén fuertemente acoplados).
  • 36. Patrones de Comportamiento Participantes  Subject.  Conoce a sus observadores, que pueden ser un número arbitrario.  Proporciona un interfaz para añadir y quitar objetos Observer.  Observer.  Define un interfaz de actualización para los objetos que deben ser notificados sobre cambios en un sujeto.  ConcreteSubject.  Almacena estado de interés para ConcreteObservers.  Manda notificaciones a sus observadores cuando su estado cambia.  ConcreteObserver.  Mantiene una referencia a objetos ConcreteSubject.  Almacena el estado que debe ser consistente con el del sujeto.  Implementa el interfaz de actualización del Observer para mantener su estado consistente con el del sujeto. Observer
  • 37. Patrones de Comportamiento Colaboraciones  El ConcreteSubject notifica a sus observadores cada vez que se produce un cambio que pudiera hacer que el estado de estos fuese inconsistente con el suyo.  Después de ser notificado del cambio, un ConcreteObserver puede pedir al Subject más información. Observer
  • 38. Patrones de Comportamiento Consecuencias  Permite modificar los sujetos y observadores de manera independiente.  Se pueden reutilizar los sujetos sin sus observadores y viceversa.  Se pueden añadir observadores sin modificar el sujeto u otros observadores.  Acoplamiento abstracto entre sujeto y observador. El sujeto no conoce la clase concreta de ningún observador (el acoplamiento es mínimo).  Capacidad de comunicación mediante difusión. La notificación del sujeto se envía automáticamente a todos los observadores suscritos. Se pueden añadir y quitar observadores en cualquier momento.  Actualizaciones inesperadas. Una operación aparentemente inofensiva sobre el sujeto puede desencadenar una cascada de cambios en los observadores. Observer
  • 39. Patrones de Comportamiento Implementación  Correspondencia entre sujetos y observadores.  Que el sujeto guarde referencias a los observadores a los que debe notificar.  Observar más de un sujeto.  Ej.: una hoja de cálculo puede observar más de un origen de datos.  Extender la interfaz de actualización para que el observador sepa qué sujeto se ha actualizado (quizá simplemente el sujeto se pase a sí mismo como parámetro del update()).  ¿Quién dispara la actualización?  Las operaciones que cambien el estado del sujeto llaman a Notify(). • Ventaja: los clientes no tienen que hacer nada. • Inconveniente: no es óptimo si hay varios cambios de estado seguidos.  Los clientes llaman a Notify(): • Ventaja: se puede optimizar llamando a notify sólo después de varios • cambios. • Inconveniente: los clientes tienen la responsabilidad añadida de llamar • a Notify(). Observer
  • 40. Patrones de Comportamiento Implementación Referencias perdidas a sujetos borrados.  Una manera de evitarlo es notificar a los observadores cuando se borra un sujeto. Asegurarse de que el estado del Sujeto sea consistente consigo mismo antes de la notificación:  Hay que tener cuidado con las operaciones heredadas. Observer
  • 41. Patrones de Comportamiento Implementación  Evitar protocolos específicos del obervador: los modelos push y pull.  Las implementaciones de observer suelen hacer que el sujeto envíe información adicional como parámetro de Update().  Dos extremos: • Modelo Push: el sujeto envía información detalla del cambio, quieran los observadores o no. Inconveniente: observadores menos reutilizables. • Modelo Pull: el sujeto no envía nada, y los observadores piden después los detalles explícitamente. Inconveniente: puede ser poco eficiente.  Especificar las modificaciones de interés explícitamente:  Mejorar la eficiencia haciendo que los observadores registren solo aquellos eventos que les interesen.  Los observadores se subscriben a aspectos del sujeto. Observer
  • 42. Patrones de Comportamiento Implementación Encapsular la semántica de las operaciones complejas.  Si la relación de dependencia entre sujetos y observadores es compleja, puede ser necesario un objeto intermedio para la gestión de cambios (ChangeManager).  Minimizar el trabajo necesario para que los observadores reflejen los cambios en el sujeto.  Ej.: si varios sujetos han de cambiarse, asegurarse de que se notifique a los observadores sólo después del cambio en el último sujeto. Observer
  • 44. Patrones de Comportamiento Usos conocidos Observer Sistemas de eventos en Java (observer=listener)  AWT/Swing  Javabeans MVC en el sistema de ventanas de Smalltalk  Model=Subject  View=Observer  Controller=Cualquier objeto que cambie el estado de Subject MVC en entornos web (J2EE)  Model=EJB  View=JSP  Controller=servlet
  • 46. Conclusiones  Los patrones ayudan a generar software “maleable” (software que soporta y facilita el cambio, la reutilización y la mejora).  Cada patrón describe la solución a problemas que se repiten una y otra vez en nuestro entorno, de forma que se puede usar esa solución todas las veces que haga falta.  Los patrones de diseño capturan el conocimiento que tienen los expertos a la hora de diseñar.  Los patrones de diseño son guías, no reglas rigurosas.
  • 47. Bibliografía  “Design patterns, elements of reusable object oriented software”. Gamma, Helm, Jonhnson, Vlissides. Addison Wesley, 1995 (traducido al español en 2003).