SlideShare una empresa de Scribd logo
1 de 16
Patrones de Diseño

        Pablo Cáceres F.
¿Qué son los patrones de diseño?
   Patrones de diseño o más comúnmente conocidos
    como "Design Patterns“, son soluciones simples y
    elegantes a problemas específicos y comunes del
    diseño orientado a objetos.
   Son soluciones basadas en la experiencia y que se
    ha demostrado que funcionan.
Patrones de Diseño
   Es evidente que a lo largo de multitud de diseños de
    aplicaciones hay problemas que se repiten o que
    son análogos, es decir, que responden a un cierto
    patrón
Objetivos de los patrones
   Proporcionar catálogos de elementos reusables en el
    diseño de sistemas software.
   Evitar la reiteración en la búsqueda de soluciones a
    problemas ya conocidos y solucionados anteriormente.
   Formalizar un vocabulario común entre diseñadores.
   Estandarizar el modo en que se realiza el diseño.
   Facilitar el aprendizaje de las nuevas generaciones de
    diseñadores condensando conocimiento ya existente.

Asimismo, no pretenden:

   Imponer ciertas alternativas de diseño frente a otras.
   Eliminar la creatividad inherente al proceso de diseño.
Categorías de patrones
Según la escala o nivel de abstracción:

   Patrones de arquitectura: Aquéllos que expresan
    un esquema organizativo estructural fundamental
    para sistemas de software.
   Patrones de diseño: Aquéllos que expresan
    esquemas para definir estructuras de diseño (o sus
    relaciones) con las que construir sistemas de
    software.
   Dialectos: Patrones de bajo nivel específicos para
    un lenguaje de programación o entorno concreto.
Estructuras o plantillas de patrones
   Nombre del patrón: nombre estándar del patrón por el cual será reconocido en la
    comunidad (normalmente se expresan en inglés).
   Clasificación del patrón: creacional, estructural o de comportamiento.
   Intención: ¿Qué problema pretende resolver el patrón?
   También conocido como: Otros nombres de uso común para el patrón.
   Motivación: Escenario de ejemplo para la aplicación del patrón.
   Aplicabilidad: Usos comunes y criterios de aplicabilidad del patrón.
   Estructura: Diagramas de clases oportunos para describir las clases que intervienen
    en el patrón.
   Participantes: Enumeración y descripción de las entidades abstractas (y sus roles)
    que participan en el patrón.
   Colaboraciones: Explicación de las interrelaciones que se dan entre los
    participantes.
   Consecuencias: Consecuencias positivas y negativas en el diseño derivadas de la
    aplicación del patrón.
   Implementación: Técnicas o comentarios oportunos de cara a la implementación del
    patrón.
   Código de ejemplo: Código fuente ejemplo de implementación del patrón.
   Usos conocidos: Ejemplos de sistemas reales que usan el patrón.
   Patrones relacionados: Referencias cruzadas con otros patrones.
Catálogos de Patrones de Diseño
Los mas conocidos son:

    GOF (Gang of Four)

    Core J2EE Patterns
Core J2EE Patterns – Capa presentación
Front Controller/ Front Component
   Objeto que acepta todos los requerimientos de un
    cliente y los direcciona a manejadores apropiados.
   El patrón Front Controller podría dividir la
    funcionalidad en 2 diferentes objetos: el Front
    Controller y el Dispatcher. En ese caso, El Front
    Controller acepta todos los requerimientos de un
    cliente y realiza la autenticación, y el Dispatcher
    direcciona los requerimientos a manejadores
    apropiada.
View Helper
   Un objeto helper que encapsula la lógica de acceso
    a datos en beneficio de los componentes de la
    presentación.
   Por ejemplo, los JavaBeans pueden ser usados
    como patrón View Helper para las páginas JSP.
Composite view
   Un objeto vista que está compuesto de otros objetos
    vista. Por ejemplo, una página JSP que incluye otras
    páginas JSP y HTML usando la directiva include o el
    action include es un patrón Composite View.
Service To Worker
   Es como el patrón de diseño MVC con el
    Controlador actuando como Front Controller pero
    con una cosa importante: aquí el Dispatcher (el cual
    es parte del Front Controller) usa View Helpers a
    gran escala y ayuda en el manejo de la vista.
Dispatcher View
   Es como el patrón de diseño MVC con el controlador
    actuando como Front Controller pero con un asunto
    importante: aquí el Dispatcher (el cual es parte del
    Front Controller) no usa View Helpers y realiza muy
    poco trabajo en el manejo de la vista. El manejo de
    la vista es manejado por los mismos componentes
    de la Vista.
Gang Of Four (GoF)
   En el libro del GoF se propone unos principios
    fundamentales de diseño subyacentes a los patrones de
    diseño que permiten crear aplicaciones más flexibles y
    robustas:
   Programar para interfaces y no para una
    implementación.
   Favorecer la composición de objetos frente a la herencia
    de clases.
   Otros principios de gran importancia que se derivan de
    los principios anteriores son los que se detallan a
    continuación:
   Determinar qué es común y qué es variable
    (commonality analisys).
       Común = Estable
   Permitir el reemplazo de lo variable mediante una
Clasificación de patrones de diseño
   De Creación: Abstraen el proceso de creación de
    instancias de objetos. Ayudan a hacer a un sistema
    independiente de cómo se crean, se componen y se
    representan sus objetos.
   Estructurales: Tratan con la composición de clases
    u objetos. Se ocupan de cómo las clases y objetos
    son utilizados para componer estructuras de mayor
    tamaño.
   De Comportamiento: Caracterizan el modo en que
    las clases y objetos interactúan y se reparten la
    responsabilidad. Atañen a los algoritmos y a la
    asignación de responsabilidades entre objetos.
Patrones de diseño: introducción a los patrones de diseño orientados a objetos

Más contenido relacionado

La actualidad más candente

7.modelado de los requerimientos escenarios y clases
7.modelado de los requerimientos  escenarios y clases7.modelado de los requerimientos  escenarios y clases
7.modelado de los requerimientos escenarios y clasesRamiro Estigarribia Canese
 
Caracteristicas del modelo orientado a objetos
Caracteristicas del modelo orientado a objetosCaracteristicas del modelo orientado a objetos
Caracteristicas del modelo orientado a objetosJose Diaz Silva
 
Modelo Orientado A Objetos
Modelo Orientado A ObjetosModelo Orientado A Objetos
Modelo Orientado A Objetosjose_rob
 
1.1. conceptualizacion de_tecnologia_orientada_a_objetos_y_programacion_tradi...
1.1. conceptualizacion de_tecnologia_orientada_a_objetos_y_programacion_tradi...1.1. conceptualizacion de_tecnologia_orientada_a_objetos_y_programacion_tradi...
1.1. conceptualizacion de_tecnologia_orientada_a_objetos_y_programacion_tradi...Juan Morales
 
Arquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseñoArquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseñoGermania Rodriguez
 
Análisis orientado a objetos y uml
Análisis orientado a objetos y umlAnálisis orientado a objetos y uml
Análisis orientado a objetos y umlSena
 
Analisis estructurado y Orientado a objeto
Analisis estructurado y Orientado a objetoAnalisis estructurado y Orientado a objeto
Analisis estructurado y Orientado a objetoNormanBonavista24
 
Arquitectura de software orientada a patrones
Arquitectura de software orientada a patronesArquitectura de software orientada a patrones
Arquitectura de software orientada a patronesGustavo De la Cruz Tovar
 
Qué Es El AnáLisis Y DiseñO De Software Orientado A Objetos
Qué Es El AnáLisis Y DiseñO De Software Orientado A ObjetosQué Es El AnáLisis Y DiseñO De Software Orientado A Objetos
Qué Es El AnáLisis Y DiseñO De Software Orientado A Objetosmaria8003
 
Analisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A ObjetosAnalisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A Objetosyoiner santiago
 
Vistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de SoftwareVistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de SoftwareRoberth Loaiza
 
Aplicaciones del modelo y especificaciones
Aplicaciones del modelo y especificacionesAplicaciones del modelo y especificaciones
Aplicaciones del modelo y especificacionesedsacun
 
DiseñO Orientado A Objetos
DiseñO Orientado A ObjetosDiseñO Orientado A Objetos
DiseñO Orientado A ObjetosFrancisco Godoy
 
Uml presentacion
Uml presentacionUml presentacion
Uml presentacionexusjhonk
 
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
 
Objeto de Aprendizaje : Introducción a UML
Objeto de Aprendizaje : Introducción a UMLObjeto de Aprendizaje : Introducción a UML
Objeto de Aprendizaje : Introducción a UMLabigail2015
 

La actualidad más candente (20)

7.modelado de los requerimientos escenarios y clases
7.modelado de los requerimientos  escenarios y clases7.modelado de los requerimientos  escenarios y clases
7.modelado de los requerimientos escenarios y clases
 
Análisis y diseño orientado a objetos
Análisis y diseño orientado a objetosAnálisis y diseño orientado a objetos
Análisis y diseño orientado a objetos
 
Caracteristicas del modelo orientado a objetos
Caracteristicas del modelo orientado a objetosCaracteristicas del modelo orientado a objetos
Caracteristicas del modelo orientado a objetos
 
Metodologías de desarrollo orientado a objetos
Metodologías de desarrollo orientado a objetosMetodologías de desarrollo orientado a objetos
Metodologías de desarrollo orientado a objetos
 
Modelo Orientado A Objetos
Modelo Orientado A ObjetosModelo Orientado A Objetos
Modelo Orientado A Objetos
 
1.1. conceptualizacion de_tecnologia_orientada_a_objetos_y_programacion_tradi...
1.1. conceptualizacion de_tecnologia_orientada_a_objetos_y_programacion_tradi...1.1. conceptualizacion de_tecnologia_orientada_a_objetos_y_programacion_tradi...
1.1. conceptualizacion de_tecnologia_orientada_a_objetos_y_programacion_tradi...
 
Arquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseñoArquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseño
 
Análisis orientado a objetos y uml
Análisis orientado a objetos y umlAnálisis orientado a objetos y uml
Análisis orientado a objetos y uml
 
Analisis estructurado y Orientado a objeto
Analisis estructurado y Orientado a objetoAnalisis estructurado y Orientado a objeto
Analisis estructurado y Orientado a objeto
 
Drs u3 a2_fegc
Drs u3 a2_fegcDrs u3 a2_fegc
Drs u3 a2_fegc
 
Arquitectura de software orientada a patrones
Arquitectura de software orientada a patronesArquitectura de software orientada a patrones
Arquitectura de software orientada a patrones
 
Qué Es El AnáLisis Y DiseñO De Software Orientado A Objetos
Qué Es El AnáLisis Y DiseñO De Software Orientado A ObjetosQué Es El AnáLisis Y DiseñO De Software Orientado A Objetos
Qué Es El AnáLisis Y DiseñO De Software Orientado A Objetos
 
Analisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A ObjetosAnalisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A Objetos
 
Vistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de SoftwareVistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de Software
 
Aplicaciones del modelo y especificaciones
Aplicaciones del modelo y especificacionesAplicaciones del modelo y especificaciones
Aplicaciones del modelo y especificaciones
 
DiseñO Orientado A Objetos
DiseñO Orientado A ObjetosDiseñO Orientado A Objetos
DiseñO Orientado A Objetos
 
Uml presentacion
Uml presentacionUml presentacion
Uml presentacion
 
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
 
Patrones de Diseño
Patrones de DiseñoPatrones de Diseño
Patrones de Diseño
 
Objeto de Aprendizaje : Introducción a UML
Objeto de Aprendizaje : Introducción a UMLObjeto de Aprendizaje : Introducción a UML
Objeto de Aprendizaje : Introducción a UML
 

Destacado

Conférence Silicon Salad : "Back office : la face cachée du e-commerce "
Conférence Silicon Salad : "Back office : la face cachée du e-commerce "Conférence Silicon Salad : "Back office : la face cachée du e-commerce "
Conférence Silicon Salad : "Back office : la face cachée du e-commerce "Silicon Salad
 
Patrones Arquitecturales: Pipes & Filters
Patrones Arquitecturales: Pipes & FiltersPatrones Arquitecturales: Pipes & Filters
Patrones Arquitecturales: Pipes & FiltersNacho Bongiovanni
 
Patrones arquitectónicos layers
Patrones arquitectónicos layersPatrones arquitectónicos layers
Patrones arquitectónicos layersMatias Yima
 
Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de softwareIker Canarias
 

Destacado (6)

Conférence Silicon Salad : "Back office : la face cachée du e-commerce "
Conférence Silicon Salad : "Back office : la face cachée du e-commerce "Conférence Silicon Salad : "Back office : la face cachée du e-commerce "
Conférence Silicon Salad : "Back office : la face cachée du e-commerce "
 
Patrones Arquitecturales: Pipes & Filters
Patrones Arquitecturales: Pipes & FiltersPatrones Arquitecturales: Pipes & Filters
Patrones Arquitecturales: Pipes & Filters
 
Patrones arquitectónicos layers
Patrones arquitectónicos layersPatrones arquitectónicos layers
Patrones arquitectónicos layers
 
Patron de Arquitectura Broker
Patron de Arquitectura BrokerPatron de Arquitectura Broker
Patron de Arquitectura Broker
 
Patrones diseño y arquitectura
Patrones diseño y arquitecturaPatrones diseño y arquitectura
Patrones diseño y arquitectura
 
Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de software
 

Similar a Patrones de diseño: introducción a los patrones de diseño orientados a objetos

Similar a Patrones de diseño: introducción a los patrones de diseño orientados a objetos (20)

chuy
chuy chuy
chuy
 
Patrones de-diseño-mañana
Patrones de-diseño-mañanaPatrones de-diseño-mañana
Patrones de-diseño-mañana
 
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
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 
Patrones de Diseño en e-learning
Patrones de Diseño en e-learningPatrones de Diseño en e-learning
Patrones de Diseño en e-learning
 
12-150203140754-conversion-gate02.pptx
12-150203140754-conversion-gate02.pptx12-150203140754-conversion-gate02.pptx
12-150203140754-conversion-gate02.pptx
 
0 todo
0 todo0 todo
0 todo
 
Desarrollo de Software Orienta a Objetos
Desarrollo de Software Orienta a ObjetosDesarrollo de Software Orienta a Objetos
Desarrollo de Software Orienta a Objetos
 
patronesdiseño2009.ppt
patronesdiseño2009.pptpatronesdiseño2009.ppt
patronesdiseño2009.ppt
 
DiseñO De Sitemas
DiseñO De SitemasDiseñO De Sitemas
DiseñO De Sitemas
 
Fundamentos de Diseño Orientado a Objetos
Fundamentos de Diseño Orientado a ObjetosFundamentos de Diseño Orientado a Objetos
Fundamentos de Diseño Orientado a Objetos
 
Desarrollo de software
Desarrollo de softwareDesarrollo de software
Desarrollo de software
 
Diseño de patrones
Diseño de patronesDiseño de patrones
Diseño de 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
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
Densy yuli
Densy yuliDensy yuli
Densy yuli
 
1127082.ppt
1127082.ppt1127082.ppt
1127082.ppt
 
Modelado del AnáLisis
Modelado del AnáLisisModelado del AnáLisis
Modelado del AnáLisis
 
Densy yuli
Densy yuliDensy yuli
Densy yuli
 

Más de Pablo Andres Cáceres Ferreira (16)

Creación aplicación Web base struts2
Creación aplicación Web base struts2Creación aplicación Web base struts2
Creación aplicación Web base struts2
 
Agile Scrum
Agile ScrumAgile Scrum
Agile Scrum
 
Introducción JEE
Introducción JEEIntroducción JEE
Introducción JEE
 
Jdbc Mysql
Jdbc MysqlJdbc Mysql
Jdbc Mysql
 
Clase 21 programacion ejb 3.0
Clase 21 programacion ejb 3.0Clase 21 programacion ejb 3.0
Clase 21 programacion ejb 3.0
 
Clase 19 programación en base a patrones
Clase 19 programación en base a patronesClase 19 programación en base a patrones
Clase 19 programación en base a patrones
 
Clase 18 packages y subsistemas
Clase 18 packages y subsistemasClase 18 packages y subsistemas
Clase 18 packages y subsistemas
 
Clase 16 arq-capa-negocios
Clase 16  arq-capa-negociosClase 16  arq-capa-negocios
Clase 16 arq-capa-negocios
 
Clase 14 intro ej bs
Clase 14  intro ej bsClase 14  intro ej bs
Clase 14 intro ej bs
 
Clase 5 struts2
Clase 5 struts2Clase 5 struts2
Clase 5 struts2
 
Clase ii intro j2 ee resumen
Clase ii   intro j2 ee resumenClase ii   intro j2 ee resumen
Clase ii intro j2 ee resumen
 
Conexión base de datos con jdbc
Conexión base de datos con jdbcConexión base de datos con jdbc
Conexión base de datos con jdbc
 
Clase 11 12-tags struts2
Clase 11 12-tags struts2Clase 11 12-tags struts2
Clase 11 12-tags struts2
 
Resumen jee
Resumen jeeResumen jee
Resumen jee
 
Introduccion a UML
Introduccion a UMLIntroduccion a UML
Introduccion a UML
 
Java2 servicios web
Java2 servicios webJava2 servicios web
Java2 servicios web
 

Patrones de diseño: introducción a los patrones de diseño orientados a objetos

  • 1. Patrones de Diseño Pablo Cáceres F.
  • 2. ¿Qué son los patrones de diseño?  Patrones de diseño o más comúnmente conocidos como "Design Patterns“, son soluciones simples y elegantes a problemas específicos y comunes del diseño orientado a objetos.  Son soluciones basadas en la experiencia y que se ha demostrado que funcionan.
  • 3. Patrones de Diseño  Es evidente que a lo largo de multitud de diseños de aplicaciones hay problemas que se repiten o que son análogos, es decir, que responden a un cierto patrón
  • 4. Objetivos de los patrones  Proporcionar catálogos de elementos reusables en el diseño de sistemas software.  Evitar la reiteración en la búsqueda de soluciones a problemas ya conocidos y solucionados anteriormente.  Formalizar un vocabulario común entre diseñadores.  Estandarizar el modo en que se realiza el diseño.  Facilitar el aprendizaje de las nuevas generaciones de diseñadores condensando conocimiento ya existente. Asimismo, no pretenden:  Imponer ciertas alternativas de diseño frente a otras.  Eliminar la creatividad inherente al proceso de diseño.
  • 5. Categorías de patrones Según la escala o nivel de abstracción:  Patrones de arquitectura: Aquéllos que expresan un esquema organizativo estructural fundamental para sistemas de software.  Patrones de diseño: Aquéllos que expresan esquemas para definir estructuras de diseño (o sus relaciones) con las que construir sistemas de software.  Dialectos: Patrones de bajo nivel específicos para un lenguaje de programación o entorno concreto.
  • 6. Estructuras o plantillas de patrones  Nombre del patrón: nombre estándar del patrón por el cual será reconocido en la comunidad (normalmente se expresan en inglés).  Clasificación del patrón: creacional, estructural o de comportamiento.  Intención: ¿Qué problema pretende resolver el patrón?  También conocido como: Otros nombres de uso común para el patrón.  Motivación: Escenario de ejemplo para la aplicación del patrón.  Aplicabilidad: Usos comunes y criterios de aplicabilidad del patrón.  Estructura: Diagramas de clases oportunos para describir las clases que intervienen en el patrón.  Participantes: Enumeración y descripción de las entidades abstractas (y sus roles) que participan en el patrón.  Colaboraciones: Explicación de las interrelaciones que se dan entre los participantes.  Consecuencias: Consecuencias positivas y negativas en el diseño derivadas de la aplicación del patrón.  Implementación: Técnicas o comentarios oportunos de cara a la implementación del patrón.  Código de ejemplo: Código fuente ejemplo de implementación del patrón.  Usos conocidos: Ejemplos de sistemas reales que usan el patrón.  Patrones relacionados: Referencias cruzadas con otros patrones.
  • 7. Catálogos de Patrones de Diseño Los mas conocidos son:  GOF (Gang of Four)  Core J2EE Patterns
  • 8. Core J2EE Patterns – Capa presentación
  • 9. Front Controller/ Front Component  Objeto que acepta todos los requerimientos de un cliente y los direcciona a manejadores apropiados.  El patrón Front Controller podría dividir la funcionalidad en 2 diferentes objetos: el Front Controller y el Dispatcher. En ese caso, El Front Controller acepta todos los requerimientos de un cliente y realiza la autenticación, y el Dispatcher direcciona los requerimientos a manejadores apropiada.
  • 10. View Helper  Un objeto helper que encapsula la lógica de acceso a datos en beneficio de los componentes de la presentación.  Por ejemplo, los JavaBeans pueden ser usados como patrón View Helper para las páginas JSP.
  • 11. Composite view  Un objeto vista que está compuesto de otros objetos vista. Por ejemplo, una página JSP que incluye otras páginas JSP y HTML usando la directiva include o el action include es un patrón Composite View.
  • 12. Service To Worker  Es como el patrón de diseño MVC con el Controlador actuando como Front Controller pero con una cosa importante: aquí el Dispatcher (el cual es parte del Front Controller) usa View Helpers a gran escala y ayuda en el manejo de la vista.
  • 13. Dispatcher View  Es como el patrón de diseño MVC con el controlador actuando como Front Controller pero con un asunto importante: aquí el Dispatcher (el cual es parte del Front Controller) no usa View Helpers y realiza muy poco trabajo en el manejo de la vista. El manejo de la vista es manejado por los mismos componentes de la Vista.
  • 14. Gang Of Four (GoF)  En el libro del GoF se propone unos principios fundamentales de diseño subyacentes a los patrones de diseño que permiten crear aplicaciones más flexibles y robustas:  Programar para interfaces y no para una implementación.  Favorecer la composición de objetos frente a la herencia de clases.  Otros principios de gran importancia que se derivan de los principios anteriores son los que se detallan a continuación:  Determinar qué es común y qué es variable (commonality analisys).  Común = Estable  Permitir el reemplazo de lo variable mediante una
  • 15. Clasificación de patrones de diseño  De Creación: Abstraen el proceso de creación de instancias de objetos. Ayudan a hacer a un sistema independiente de cómo se crean, se componen y se representan sus objetos.  Estructurales: Tratan con la composición de clases u objetos. Se ocupan de cómo las clases y objetos son utilizados para componer estructuras de mayor tamaño.  De Comportamiento: Caracterizan el modo en que las clases y objetos interactúan y se reparten la responsabilidad. Atañen a los algoritmos y a la asignación de responsabilidades entre objetos.