SlideShare una empresa de Scribd logo
PATRONES DE
DISEÑO
KELLY CUERVO
Patrón de Diseño 
“Los patrones de diseño son el esqueleto de las soluciones a problemas comunes en
el desarrollo de software.”
• Christopher Alexander ((Arquitecto/Urbanista)(1977):
..Cada patrón describe un problema que ocurre una y otra vez en nuestro
entorno, y describe la esencia de la solución a ese problema, de tal modo que
pueda utilizarse esta solución un millón de veces más, sin siquiera hacerlo de
la misma manera dos veces”
Un patrón es:
• Una solución a un problema en un contexto particular
• Recurrente (lo que hace la solución relevante a otras situaciones)
• Enseña (permite entender cómo adaptarlo a la variante particular del problema donde se
quiere aplicar)
• Tiene un nombre para referirse al patrón
Para que una solución sea tomada como un patrón debe cumplir al menos estos dos requisitos:
• Efectivo!
• Reutilizable!
Los PATRONES DE DISEÑO pretenden.. No pretenden..
• Evitar la reiteración en la búsqueda de soluciones
a problemas ya conocidos y solucionados
anteriormente.
• Estandarizar el modo en que se realiza el diseño.
• Ayudar a la comprensión de un sistema
rápidamente cuando está documentado con los
patrones que se usaron.
• Formalizar un vocabulario común entre
diseñadores.
Lenguajes de patrones
• Imponer ciertas alternativas
de diseño frente a otras
----------------------------------------
• No es obligatorio utilizar los
patrones.
• Abusar o forzar el uso de los
patrones puede ser un error.
ANTIPATRÓ
N
Nombre del patrón.
• Describe el problema de diseño.
Problema.
• Describe cuándo aplicar el patrón.
• Explica el problema y su contexto.
Solución.
• Elementos que forman el diseño,
relaciones, responsabilidades.
• No un diseño concreto, sino una
plantilla que puede aplicarse en
muchas situaciones distintas.
Consecuencias.
• Resultados, ventajas e inconvenientes
de aplicar el patrón.
• P.ej.: relación entre eficiencia en
espacio y tiempo; cuestiones de
implementación etc.
• Creación
• Estructura
• Comportamiento
Además, Patrones de Diseño Fundamentales..
• DELEGATION
Cuando se quiere extender y reutilizar la funcionalidad
de una clase sin utilizar HERENCIA.
Ventajas:
• En vez de herencia múltiple
• Cuando una clase que hereda de otra quiere ocultar algunos
de los métodos heredados
• Compartir código que no se puede heredar
EJ: PATRÓN DELEGATION
PROBLEMA
• El lenguaje utilizado NO
PERMITE HERENCIA
MÚLTIPLE
• La clase C no desea
TODOS los métodos de B
EJ: PATRÓN DELEGATION
SOLUCION
• No se utiliza la
herencia sino que se
hace uso de la relación
“usa”
EJ: PATRÓN DELEGATION
IMPLEMENTACION
class C extends A {
B objB;
C ( ) { // En el constructor se puede crear obj. de B
objB=new B();
}
void b1( ) { objB.b1( );}
….
Además, Patrones de Diseño Fundamentales..
• INTERFACE
Definir un comportamiento independiente de donde
vaya a ser utilizado
• MARKER INTERFACE
Sirve para indicar atributos semánticos de una clase.
Ventajas:
• Se puede preguntar si un objeto pertenece a una clase de un determinado
tipo o no.
• Se utiliza en clases de utilidades que tienen que determinar algo sobre
objetos sin asumir que son instancias de una determinada clase o no.
• PatrÓN SINGLETON
Asegurar que una clase tenga una sola instancia y
proporcionar un punto de acceso global a ella
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
¿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
• PatrÓN Factory Method
Define una interfaz para crear un objeto, pero deja que sean
las subclases quienes decidan qué clase instanciar.
• PatrÓN PROXY
Proporcionar un representante de otro objeto para controlar el acceso
a este.
• PatrÓN ADAPTER
Permite trabajar juntas a clases con interfaces diferentes a través de la
creación de un objeto común mediante el que puedan comunicarse e
interactuar.
• PatrÓN COMPOSITE
Facilita la creación de jerarquías de objetos donde cada objeto se
puede tratar de forma independiente o como un conjunto de objetos
anidados a través de la misma interfaz.
• PatrÓN FACADE
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.
• PatrÓN CHAIN OP RESPONSABILITY
 Evita acoplar el emisor de una petición a su receptor dando a más de
un objeto la posibilidad de responder a una petición
• PatrÓN ITERATOR
Define una interfaz que declara los métodos necesarios para acceder
secuencialmente a un grupo de objetos de una colección.
Algunos de los métodos comunes que se definen en la interfaz Iterador son:
• Primero()
• Siguiente()
• HayMas()
• ElementoActual()
• PatrÓN MEDIATOR
 Define un objeto que encapsula la manera en que interactúan un
conjunto de objetos entre ellos.
• PatrÓN MEMENTO
 Su finalidad es almacenar el estado de un objeto (o del sistema completo)
en un momento dado de manera que se pueda restaurar en ese punto de manera
sencilla.
PatrÓN Observer
 Define una dependencia del tipo uno-a-muchos entre objetos, de
manera que cuando uno de los objetos cambia su estado, notifica este
cambio a todos los dependientes.
• PatrÓN STATE
Se utiliza cuando el comportamiento de un objeto cambia dependiendo del
estado del mismo.
MAS INFORMACION..
KELLY CUERVO
3164681006
DIEGO H. AGUILAR
SOFTWARE II
UNIVERSIDAD DE LA
AMAZONIA
2014

Más contenido relacionado

La actualidad más candente

Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
Cesar David Fernandez Grueso
 
8b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 18b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 1
Clara Patricia Avella Ibañez
 
Constructores en Java
Constructores en JavaConstructores en Java
Constructores en Java
UCE
 
7 Curso de POO en java - diagrama de clases
7 Curso de POO en java - diagrama de clases7 Curso de POO en java - diagrama de clases
7 Curso de POO en java - diagrama de clases
Clara Patricia Avella Ibañez
 
Metodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A ObjetosMetodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A Objetoshector_h30
 
Procedimientos almacenados
Procedimientos almacenadosProcedimientos almacenados
Procedimientos almacenados
thalia margarita serrano diaz
 
Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)
Josue Lara Reyes
 
Conceptos basicos POO
Conceptos basicos POOConceptos basicos POO
Conceptos basicos POO
Uniminuto - San Francisco
 
Patrones GOF
Patrones GOFPatrones GOF
Diagrama UML de Clases
Diagrama UML de ClasesDiagrama UML de Clases
Diagrama UML de Clases
Adal Dg
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clases
Nedoww Haw
 
Ejercicio sql tienda informatica (1)
Ejercicio sql tienda informatica (1)Ejercicio sql tienda informatica (1)
Ejercicio sql tienda informatica (1)Jsrfs Montemayor
 
Vistas en SQL
Vistas en SQLVistas en SQL
Metodologia orientada a objeto
Metodologia orientada a objetoMetodologia orientada a objeto
Metodologia orientada a objeto
Luis Eduardo Aponte
 
Adapter pattern
Adapter patternAdapter pattern
Adapter pattern
Shakil Ahmed
 
Comandos ddl y dml
Comandos ddl y dmlComandos ddl y dml
Comandos ddl y dmlGerardo
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño Ikaolong
 

La actualidad más candente (20)

Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
 
8b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 18b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 1
 
Constructores en Java
Constructores en JavaConstructores en Java
Constructores en Java
 
7 Curso de POO en java - diagrama de clases
7 Curso de POO en java - diagrama de clases7 Curso de POO en java - diagrama de clases
7 Curso de POO en java - diagrama de clases
 
Metodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A ObjetosMetodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A Objetos
 
Procedimientos almacenados
Procedimientos almacenadosProcedimientos almacenados
Procedimientos almacenados
 
Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)
 
Conceptos basicos POO
Conceptos basicos POOConceptos basicos POO
Conceptos basicos POO
 
Patrones GOF
Patrones GOFPatrones GOF
Patrones GOF
 
Diagrama UML de Clases
Diagrama UML de ClasesDiagrama UML de Clases
Diagrama UML de Clases
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clases
 
Ejercicio sql tienda informatica (1)
Ejercicio sql tienda informatica (1)Ejercicio sql tienda informatica (1)
Ejercicio sql tienda informatica (1)
 
Vistas en SQL
Vistas en SQLVistas en SQL
Vistas en SQL
 
DIAGRAMAS DE CLASE
DIAGRAMAS DE CLASEDIAGRAMAS DE CLASE
DIAGRAMAS DE CLASE
 
Metodologia orientada a objeto
Metodologia orientada a objetoMetodologia orientada a objeto
Metodologia orientada a objeto
 
Patron creacional singleton
Patron creacional singletonPatron creacional singleton
Patron creacional singleton
 
Adapter pattern
Adapter patternAdapter pattern
Adapter pattern
 
Comandos ddl y dml
Comandos ddl y dmlComandos ddl y dml
Comandos ddl y dml
 
Conceptos poo (presentación1)
Conceptos poo (presentación1)Conceptos poo (presentación1)
Conceptos poo (presentación1)
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 

Similar a Patrones de diseño

Patronesdediseo 160927143256 (1)
Patronesdediseo 160927143256 (1)Patronesdediseo 160927143256 (1)
Patronesdediseo 160927143256 (1)
ale abad aguilar
 
Semana 1 Patrones de Diseño
Semana 1   Patrones de DiseñoSemana 1   Patrones de Diseño
Semana 1 Patrones de Diseño
Richard Eliseo Mendoza Gafaro
 
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 - Daniel E. Jaramillo
Patrones de diseño - Daniel E. JaramilloPatrones de diseño - Daniel E. Jaramillo
Patrones de diseño - Daniel E. Jaramillo2008PA2Info3
 
Patrones de Diseño
Patrones de DiseñoPatrones de Diseño
Patrones de Diseño
Mariano Sánchez
 
Patrones de Diseño de Software
Patrones de Diseño de SoftwarePatrones de Diseño de Software
Patrones de Diseño de Software
William A. Molina
 
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
 
Arquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseñoArquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseño
Germania Rodriguez
 
U5.pptx
U5.pptxU5.pptx
U5.pptx
MayraTrejo23
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseñoaleja0940
 
patronesdiseño2009.ppt
patronesdiseño2009.pptpatronesdiseño2009.ppt
patronesdiseño2009.ppt
OscargiovanniAndiaMo
 
Patrones de diseño - Henry Vallejo
Patrones de diseño - Henry VallejoPatrones de diseño - Henry Vallejo
Patrones de diseño - Henry Vallejo2008PA2Info3
 
6070_TRECALDE_00288.ppt
6070_TRECALDE_00288.ppt6070_TRECALDE_00288.ppt
6070_TRECALDE_00288.ppt
Hector Manuel Vanegas Solis
 
Buider Patron de Diseño
Buider Patron de DiseñoBuider Patron de Diseño
Buider Patron de DiseñoMario Cabrera
 
thy
thythy
thy
perrra
 
Patrones de-diseño-mañana
Patrones de-diseño-mañanaPatrones de-diseño-mañana
Patrones de-diseño-mañana
ale abad aguilar
 
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
Ju Pe
 

Similar a Patrones de diseño (20)

Patronesdediseo 160927143256 (1)
Patronesdediseo 160927143256 (1)Patronesdediseo 160927143256 (1)
Patronesdediseo 160927143256 (1)
 
Semana 1 Patrones de Diseño
Semana 1   Patrones de DiseñoSemana 1   Patrones de Diseño
Semana 1 Patrones de Diseño
 
chuy
chuy chuy
chuy
 
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
 
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
 
Patrones de Diseño
Patrones de DiseñoPatrones de Diseño
Patrones de Diseño
 
Patrones de Diseño de Software
Patrones de Diseño de SoftwarePatrones de Diseño de Software
Patrones de Diseño de Software
 
Patrones de diseño [DdA-2]
Patrones de diseño [DdA-2]Patrones de diseño [DdA-2]
Patrones de diseño [DdA-2]
 
Arquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseñoArquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseño
 
U5.pptx
U5.pptxU5.pptx
U5.pptx
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
patronesdiseño2009.ppt
patronesdiseño2009.pptpatronesdiseño2009.ppt
patronesdiseño2009.ppt
 
Patrones de diseño - Henry Vallejo
Patrones de diseño - Henry VallejoPatrones de diseño - Henry Vallejo
Patrones de diseño - Henry Vallejo
 
Patron de diseño
Patron de diseñoPatron de diseño
Patron de diseño
 
6070_TRECALDE_00288.ppt
6070_TRECALDE_00288.ppt6070_TRECALDE_00288.ppt
6070_TRECALDE_00288.ppt
 
Buider Patron de Diseño
Buider Patron de DiseñoBuider Patron de Diseño
Buider Patron de Diseño
 
thy
thythy
thy
 
Patrones de-diseño-mañana
Patrones de-diseño-mañanaPatrones de-diseño-mañana
Patrones de-diseño-mañana
 
06 patrones
06 patrones06 patrones
06 patrones
 
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
 

Más de Kelly Cuervo

Especificacion requerimientossoftware
Especificacion requerimientossoftwareEspecificacion requerimientossoftware
Especificacion requerimientossoftware
Kelly Cuervo
 
Qfd - Despliegue de la función de Calidad
Qfd - Despliegue de la función de CalidadQfd - Despliegue de la función de Calidad
Qfd - Despliegue de la función de Calidad
Kelly Cuervo
 
Desempleo y teletrabajo
Desempleo y teletrabajoDesempleo y teletrabajo
Desempleo y teletrabajo
Kelly Cuervo
 
Sistemas operativos moviles
Sistemas operativos movilesSistemas operativos moviles
Sistemas operativos moviles
Kelly Cuervo
 
Sistemas de gestion documental
Sistemas de gestion documentalSistemas de gestion documental
Sistemas de gestion documental
Kelly Cuervo
 
Diagrama de secuencia
Diagrama de secuenciaDiagrama de secuencia
Diagrama de secuencia
Kelly Cuervo
 
Analisis de la informacion
Analisis de la informacionAnalisis de la informacion
Analisis de la informacion
Kelly Cuervo
 
ENCUADRE DE LA OPORTUNIDAD DE MERCADO
ENCUADRE DE LA OPORTUNIDAD DE MERCADOENCUADRE DE LA OPORTUNIDAD DE MERCADO
ENCUADRE DE LA OPORTUNIDAD DE MERCADO
Kelly Cuervo
 

Más de Kelly Cuervo (8)

Especificacion requerimientossoftware
Especificacion requerimientossoftwareEspecificacion requerimientossoftware
Especificacion requerimientossoftware
 
Qfd - Despliegue de la función de Calidad
Qfd - Despliegue de la función de CalidadQfd - Despliegue de la función de Calidad
Qfd - Despliegue de la función de Calidad
 
Desempleo y teletrabajo
Desempleo y teletrabajoDesempleo y teletrabajo
Desempleo y teletrabajo
 
Sistemas operativos moviles
Sistemas operativos movilesSistemas operativos moviles
Sistemas operativos moviles
 
Sistemas de gestion documental
Sistemas de gestion documentalSistemas de gestion documental
Sistemas de gestion documental
 
Diagrama de secuencia
Diagrama de secuenciaDiagrama de secuencia
Diagrama de secuencia
 
Analisis de la informacion
Analisis de la informacionAnalisis de la informacion
Analisis de la informacion
 
ENCUADRE DE LA OPORTUNIDAD DE MERCADO
ENCUADRE DE LA OPORTUNIDAD DE MERCADOENCUADRE DE LA OPORTUNIDAD DE MERCADO
ENCUADRE DE LA OPORTUNIDAD DE MERCADO
 

Último

Caso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La SalleCaso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La Salle
Ecaresoft Inc.
 
Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdf
juanjosebarreiro704
 
Escaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipoEscaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipo
nicromante2000
 
FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA  DE TRABAJO DE CREACION DE TABLAS EN WORDFICHA  DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
RobertSotilLujn
 
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
SamuelGampley
 
infografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de softwareinfografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de software
oscartorres960914
 
trabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docxtrabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docx
lasocharfuelan123
 
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
cuentauniversidad34
 
PitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitalesPitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitales
juanorejuela499
 
Los desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMsLos desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMs
Federico Toledo
 

Último (10)

Caso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La SalleCaso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La Salle
 
Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdf
 
Escaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipoEscaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipo
 
FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA  DE TRABAJO DE CREACION DE TABLAS EN WORDFICHA  DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
 
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
 
infografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de softwareinfografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de software
 
trabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docxtrabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docx
 
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
 
PitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitalesPitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitales
 
Los desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMsLos desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMs
 

Patrones de diseño

  • 2. Patrón de Diseño  “Los patrones de diseño son el esqueleto de las soluciones a problemas comunes en el desarrollo de software.” • Christopher Alexander ((Arquitecto/Urbanista)(1977): ..Cada patrón describe un problema que ocurre una y otra vez en nuestro entorno, y describe la esencia de la solución a ese problema, de tal modo que pueda utilizarse esta solución un millón de veces más, sin siquiera hacerlo de la misma manera dos veces”
  • 3. Un patrón es: • Una solución a un problema en un contexto particular • Recurrente (lo que hace la solución relevante a otras situaciones) • Enseña (permite entender cómo adaptarlo a la variante particular del problema donde se quiere aplicar) • Tiene un nombre para referirse al patrón Para que una solución sea tomada como un patrón debe cumplir al menos estos dos requisitos: • Efectivo! • Reutilizable!
  • 4. Los PATRONES DE DISEÑO pretenden.. No pretenden.. • Evitar la reiteración en la búsqueda de soluciones a problemas ya conocidos y solucionados anteriormente. • Estandarizar el modo en que se realiza el diseño. • Ayudar a la comprensión de un sistema rápidamente cuando está documentado con los patrones que se usaron. • Formalizar un vocabulario común entre diseñadores. Lenguajes de patrones • Imponer ciertas alternativas de diseño frente a otras ---------------------------------------- • No es obligatorio utilizar los patrones. • Abusar o forzar el uso de los patrones puede ser un error. ANTIPATRÓ N
  • 5. Nombre del patrón. • Describe el problema de diseño. Problema. • Describe cuándo aplicar el patrón. • Explica el problema y su contexto. Solución. • Elementos que forman el diseño, relaciones, responsabilidades. • No un diseño concreto, sino una plantilla que puede aplicarse en muchas situaciones distintas. Consecuencias. • Resultados, ventajas e inconvenientes de aplicar el patrón. • P.ej.: relación entre eficiencia en espacio y tiempo; cuestiones de implementación etc.
  • 7.
  • 8. Además, Patrones de Diseño Fundamentales.. • DELEGATION Cuando se quiere extender y reutilizar la funcionalidad de una clase sin utilizar HERENCIA. Ventajas: • En vez de herencia múltiple • Cuando una clase que hereda de otra quiere ocultar algunos de los métodos heredados • Compartir código que no se puede heredar
  • 9. EJ: PATRÓN DELEGATION PROBLEMA • El lenguaje utilizado NO PERMITE HERENCIA MÚLTIPLE • La clase C no desea TODOS los métodos de B
  • 10. EJ: PATRÓN DELEGATION SOLUCION • No se utiliza la herencia sino que se hace uso de la relación “usa”
  • 11. EJ: PATRÓN DELEGATION IMPLEMENTACION class C extends A { B objB; C ( ) { // En el constructor se puede crear obj. de B objB=new B(); } void b1( ) { objB.b1( );} ….
  • 12. Además, Patrones de Diseño Fundamentales.. • INTERFACE Definir un comportamiento independiente de donde vaya a ser utilizado • MARKER INTERFACE Sirve para indicar atributos semánticos de una clase. Ventajas: • Se puede preguntar si un objeto pertenece a una clase de un determinado tipo o no. • Se utiliza en clases de utilidades que tienen que determinar algo sobre objetos sin asumir que son instancias de una determinada clase o no.
  • 13. • PatrÓN SINGLETON Asegurar que una clase tenga una sola instancia y proporcionar un punto de acceso global a ella 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 ¿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
  • 14. • PatrÓN Factory Method Define una interfaz para crear un objeto, pero deja que sean las subclases quienes decidan qué clase instanciar. • PatrÓN PROXY Proporcionar un representante de otro objeto para controlar el acceso a este. • PatrÓN ADAPTER Permite trabajar juntas a clases con interfaces diferentes a través de la creación de un objeto común mediante el que puedan comunicarse e interactuar.
  • 15. • PatrÓN COMPOSITE Facilita la creación de jerarquías de objetos donde cada objeto se puede tratar de forma independiente o como un conjunto de objetos anidados a través de la misma interfaz. • PatrÓN FACADE 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. • PatrÓN CHAIN OP RESPONSABILITY  Evita acoplar el emisor de una petición a su receptor dando a más de un objeto la posibilidad de responder a una petición
  • 16. • PatrÓN ITERATOR Define una interfaz que declara los métodos necesarios para acceder secuencialmente a un grupo de objetos de una colección. Algunos de los métodos comunes que se definen en la interfaz Iterador son: • Primero() • Siguiente() • HayMas() • ElementoActual() • PatrÓN MEDIATOR  Define un objeto que encapsula la manera en que interactúan un conjunto de objetos entre ellos.
  • 17. • PatrÓN MEMENTO  Su finalidad es almacenar el estado de un objeto (o del sistema completo) en un momento dado de manera que se pueda restaurar en ese punto de manera sencilla. PatrÓN Observer  Define una dependencia del tipo uno-a-muchos entre objetos, de manera que cuando uno de los objetos cambia su estado, notifica este cambio a todos los dependientes. • PatrÓN STATE Se utiliza cuando el comportamiento de un objeto cambia dependiendo del estado del mismo.
  • 18.
  • 19. MAS INFORMACION.. KELLY CUERVO 3164681006 DIEGO H. AGUILAR SOFTWARE II UNIVERSIDAD DE LA AMAZONIA 2014

Notas del editor

  1.  ..  brindan una solución ya probada y documentada a problemas de desarrollo de software que están sujetos a contextos similares. Los precedentes a los patrones de diseño vienen del campo de la Arquitectura, Christopher Alexander a finales de los 70 escribe varios libros acerca de urbanismo y construcción de edificios, y se plantea reutilizar diseños ya aplicados en otras construcciones que cataloga como modelos a seguir. Un patrón es una descripción del problema y la esencia de su solución, q se puede reutilizar en casos distintos. Es una solución adecuada a un problema común.
  2. Efectivo resolviendo problemas similares en ocasiones anteriores. que se haya podido comprobar su éxito resolviendo problemas anteriores Reutilizable aplicable a diferentes problemas de diseño en distintas circunstancias. es decir, podemos aplicarlo a problemas que se hallan en circunstancias similares a las descritas por el patrón.
  3. Es aconsejable en el caso de tener el mismo problema o similar que soluciona el patrón Un antipatrón de diseño es un patrón de diseño que conduce a una mala solución para un problema.
  4. Resuelven problemas relacionados con la creación de instancias de objetos. Se centran en problemas relacionados con la forma de estructurar las clases Permiten resolver problemas relacionados con el comportamiento de la aplicación, normalmente en tiempo de ejecución.
  5. INTERFACE Ventajas  Desacople entre comportamiento y clase. Realización de clases “Utilities”
  6. Se quiere enviar una petición a un objeto entre varios sin especificar explícitamente el receptor.
  7. Este patrón puede ser utilizado cuando: • La comunicación entre los conjuntos de objetos está bien definido y es complejo. • Existen demasiadas relaciones y se necesita un punto común de control o comunicación