SlideShare una empresa de Scribd logo
Patrones de Diseño
Lagash Systems
Mariano Sánchez
Que son los Patrones de Diseño?
• Los patrones de diseño son soluciones a los problemas
recurrentes de diseño de software que encontramos
una y otra vez en el desarrollo de aplicaciones.
• Se clasifican en tres grupos:
– De creación (Creational),
– De estructura (Structural)
– De comportamiento. (Behavioral)
Y para que sirven?
• No reinventar la rueda…
• Lenguaje común entre desarrolladores.
• No son una «Silver Bullet».

• Flexibilidad de implementación.
Patrones
• Creational
– Factory Method
– Singleton
– Builder

• Structural
– Composite
– Facade
– Proxy

• Behavioral
– State
– Strategy
– Template Method
Factory Method
• Define una interfaz para crear un objeto, pero deja la
desición de qué clase instanciar a las subclases que la
implementen.
Singleton
• Garantiza que una clase tiene sólo una instancia y
proporciona un punto de acceso global a ella.
Builder
• Separa la construcción de un objeto complejo de su
representación para que con el mismo proceso de
construcción se pueden crear diferentes representaciones.
Composite
• Compone objetos en estructuras de árbol para representar
jerarquías parte-todo. Composite permite tratar objetos
individuales y las composiciones de manera uniforme.
Facade
• Proporciona una interfaz unificada para un conjunto de
interfaces en un subsistema. Facade (fachada) define una
interfaz de alto nivel que hace que el subsistema sea más
fácil de usar.
Proxy
• Proporcionar un sustituto de un objeto en otro para
controlar el acceso al primero.
State
• Permite que un objeto modifique su comportamiento
cuando cambia su estado interno.
Strategy
• Define una familia de algoritmos, encapsula cada
uno, y los hace intercambiables. Strategy permite al
algoritmo variar independientemente de los clientes
que lo utilizan.
Template Method
• Define el esqueleto de un algoritmo en una operación,
difiriendo algunos pasos a subclases. Template Method
permite a las subclases redefinir ciertos pasos de un
algoritmo sin cambiar su estructura.
Preguntas?
Recursos
• Design Patterns: Elements of Reusable ObjectOriented Software
– E. Gamma, R. Helms, R. Johnson, J. Vlissides;
Addison Wesley, 1994, ISBN 0201633612

• Refactoring To Patterns
– Joshua Kerievsky; Addison Wesley, 2004, ISBN
0321213351

• http://www.dofactory.com/Patterns/Patterns.aspx
Patrones de Diseño

Más contenido relacionado

Similar a 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
Iker Canarias
 
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
 
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
 
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
 
U5.pptx
U5.pptxU5.pptx
U5.pptx
MayraTrejo23
 
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 - Henry Vallejo
Patrones de diseño - Henry VallejoPatrones de diseño - Henry Vallejo
Patrones de diseño - Henry Vallejo2008PA2Info3
 
patronesdiseño2009.ppt
patronesdiseño2009.pptpatronesdiseño2009.ppt
patronesdiseño2009.ppt
OscargiovanniAndiaMo
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
jjegonzalezf
 
Capitulo 3 arquitecturas_de_desarrollo_web
Capitulo 3 arquitecturas_de_desarrollo_webCapitulo 3 arquitecturas_de_desarrollo_web
Capitulo 3 arquitecturas_de_desarrollo_web
gabiar1708
 
6070_TRECALDE_00288.ppt
6070_TRECALDE_00288.ppt6070_TRECALDE_00288.ppt
6070_TRECALDE_00288.ppt
Hector Manuel Vanegas Solis
 
Patrones de diseño de GoF
Patrones de diseño de GoFPatrones de diseño de GoF
Patrones de diseño de GoF
Yaskelly Yedra
 
Desarrollo basado en patrones
Desarrollo basado en patronesDesarrollo basado en patrones
Desarrollo basado en patronesMarvin Zumbado
 
Desarrollo de software
Desarrollo de softwareDesarrollo de software
Desarrollo de software
AlexanderLara29
 
INFOGRAFIA.pdf
INFOGRAFIA.pdfINFOGRAFIA.pdf
INFOGRAFIA.pdf
FranciscoZurisaddaiM
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
Kelly Cuervo
 

Similar a Patrones de Diseño (20)

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 - Andrés Dorado
Patrones de diseño - Andrés DoradoPatrones de diseño - Andrés Dorado
Patrones de diseño - Andrés Dorado
 
Arquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseñoArquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseño
 
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
 
U5.pptx
U5.pptxU5.pptx
U5.pptx
 
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
 
chuy
chuy chuy
chuy
 
Patron de diseño
Patron de diseñoPatron de diseño
Patron de diseño
 
Patrones de diseño - Henry Vallejo
Patrones de diseño - Henry VallejoPatrones de diseño - Henry Vallejo
Patrones de diseño - Henry Vallejo
 
patronesdiseño2009.ppt
patronesdiseño2009.pptpatronesdiseño2009.ppt
patronesdiseño2009.ppt
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 
Capitulo 3 arquitecturas_de_desarrollo_web
Capitulo 3 arquitecturas_de_desarrollo_webCapitulo 3 arquitecturas_de_desarrollo_web
Capitulo 3 arquitecturas_de_desarrollo_web
 
6070_TRECALDE_00288.ppt
6070_TRECALDE_00288.ppt6070_TRECALDE_00288.ppt
6070_TRECALDE_00288.ppt
 
Patrones de diseño de GoF
Patrones de diseño de GoFPatrones de diseño de GoF
Patrones de diseño de GoF
 
Modelos (UML)
Modelos (UML)Modelos (UML)
Modelos (UML)
 
Desarrollo basado en patrones
Desarrollo basado en patronesDesarrollo basado en patrones
Desarrollo basado en patrones
 
Desarrollo de software
Desarrollo de softwareDesarrollo de software
Desarrollo de software
 
INFOGRAFIA.pdf
INFOGRAFIA.pdfINFOGRAFIA.pdf
INFOGRAFIA.pdf
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 

Más de Mariano Sánchez

.NET Core
.NET Core.NET Core
.NET Core
Mariano Sánchez
 
ASP.NET Core 1.0
ASP.NET Core 1.0ASP.NET Core 1.0
ASP.NET Core 1.0
Mariano Sánchez
 
Introducción a SignalR
Introducción a SignalRIntroducción a SignalR
Introducción a SignalR
Mariano Sánchez
 
HTML5 + Asp.NET
HTML5 + Asp.NETHTML5 + Asp.NET
HTML5 + Asp.NET
Mariano Sánchez
 
Hey Cortana!
Hey Cortana!Hey Cortana!
Hey Cortana!
Mariano Sánchez
 
Developing Universal Apps for Windows
Developing Universal Apps for WindowsDeveloping Universal Apps for Windows
Developing Universal Apps for Windows
Mariano Sánchez
 
Introducing the Windows Phone 8.1 App Development Platform
Introducing the Windows Phone 8.1 App Development PlatformIntroducing the Windows Phone 8.1 App Development Platform
Introducing the Windows Phone 8.1 App Development Platform
Mariano Sánchez
 
Visual Studio Online
Visual Studio OnlineVisual Studio Online
Visual Studio Online
Mariano Sánchez
 
Patrones Grasp
Patrones GraspPatrones Grasp
Patrones Grasp
Mariano Sánchez
 
Conociendo TypeScript
Conociendo TypeScriptConociendo TypeScript
Conociendo TypeScript
Mariano Sánchez
 
Refactoring - Mejorando el diseño del código existente
Refactoring - Mejorando el diseño del código existenteRefactoring - Mejorando el diseño del código existente
Refactoring - Mejorando el diseño del código existente
Mariano Sánchez
 

Más de Mariano Sánchez (11)

.NET Core
.NET Core.NET Core
.NET Core
 
ASP.NET Core 1.0
ASP.NET Core 1.0ASP.NET Core 1.0
ASP.NET Core 1.0
 
Introducción a SignalR
Introducción a SignalRIntroducción a SignalR
Introducción a SignalR
 
HTML5 + Asp.NET
HTML5 + Asp.NETHTML5 + Asp.NET
HTML5 + Asp.NET
 
Hey Cortana!
Hey Cortana!Hey Cortana!
Hey Cortana!
 
Developing Universal Apps for Windows
Developing Universal Apps for WindowsDeveloping Universal Apps for Windows
Developing Universal Apps for Windows
 
Introducing the Windows Phone 8.1 App Development Platform
Introducing the Windows Phone 8.1 App Development PlatformIntroducing the Windows Phone 8.1 App Development Platform
Introducing the Windows Phone 8.1 App Development Platform
 
Visual Studio Online
Visual Studio OnlineVisual Studio Online
Visual Studio Online
 
Patrones Grasp
Patrones GraspPatrones Grasp
Patrones Grasp
 
Conociendo TypeScript
Conociendo TypeScriptConociendo TypeScript
Conociendo TypeScript
 
Refactoring - Mejorando el diseño del código existente
Refactoring - Mejorando el diseño del código existenteRefactoring - Mejorando el diseño del código existente
Refactoring - Mejorando el diseño del código existente
 

Último

Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
Emilio Casbas
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdf
ManuelCampos464987
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
cj3806354
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
raquelariza02
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
CrystalRomero18
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
cofferub
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Telefónica
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
jjfch3110
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
Leidyfuentes19
 
Alan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentaciónAlan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentación
JuanPrez962115
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
SamuelRamirez83524
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
rafaelsalazar0615
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
cdraco
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
JulyMuoz18
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
ItsSofi
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
AlejandraCasallas7
 
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
marianabz2403
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
IsabellaRubio6
 

Último (20)

Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdf
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
 
Alan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentaciónAlan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentación
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
 
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
 

Patrones de Diseño

  • 1. Patrones de Diseño Lagash Systems Mariano Sánchez
  • 2. Que son los Patrones de Diseño? • Los patrones de diseño son soluciones a los problemas recurrentes de diseño de software que encontramos una y otra vez en el desarrollo de aplicaciones. • Se clasifican en tres grupos: – De creación (Creational), – De estructura (Structural) – De comportamiento. (Behavioral)
  • 3. Y para que sirven? • No reinventar la rueda… • Lenguaje común entre desarrolladores. • No son una «Silver Bullet». • Flexibilidad de implementación.
  • 4. Patrones • Creational – Factory Method – Singleton – Builder • Structural – Composite – Facade – Proxy • Behavioral – State – Strategy – Template Method
  • 5. Factory Method • Define una interfaz para crear un objeto, pero deja la desición de qué clase instanciar a las subclases que la implementen.
  • 6. Singleton • Garantiza que una clase tiene sólo una instancia y proporciona un punto de acceso global a ella.
  • 7. Builder • Separa la construcción de un objeto complejo de su representación para que con el mismo proceso de construcción se pueden crear diferentes representaciones.
  • 8. Composite • Compone objetos en estructuras de árbol para representar jerarquías parte-todo. Composite permite tratar objetos individuales y las composiciones de manera uniforme.
  • 9. Facade • Proporciona una interfaz unificada para un conjunto de interfaces en un subsistema. Facade (fachada) define una interfaz de alto nivel que hace que el subsistema sea más fácil de usar.
  • 10. Proxy • Proporcionar un sustituto de un objeto en otro para controlar el acceso al primero.
  • 11. State • Permite que un objeto modifique su comportamiento cuando cambia su estado interno.
  • 12. Strategy • Define una familia de algoritmos, encapsula cada uno, y los hace intercambiables. Strategy permite al algoritmo variar independientemente de los clientes que lo utilizan.
  • 13. Template Method • Define el esqueleto de un algoritmo en una operación, difiriendo algunos pasos a subclases. Template Method permite a las subclases redefinir ciertos pasos de un algoritmo sin cambiar su estructura.
  • 15. Recursos • Design Patterns: Elements of Reusable ObjectOriented Software – E. Gamma, R. Helms, R. Johnson, J. Vlissides; Addison Wesley, 1994, ISBN 0201633612 • Refactoring To Patterns – Joshua Kerievsky; Addison Wesley, 2004, ISBN 0321213351 • http://www.dofactory.com/Patterns/Patterns.aspx