SlideShare una empresa de Scribd logo
Patrones GOF
Joan Sebastián Ramírez Pérez
2016
Agenda
• ¿Qué es un patrón de diseño?
• Patrones GOF
• Patrones de creación
• Patrones de estructura
• Patrones de comportamiento
• Bibliografía
¿Qué es un patrón de software?
1977, A Pattern Language, Christopher Alexander
“Cada patrón describe un problema que
ocurre una y otra vez en nuestro medio
ambiente y, a continuación describe el núcleo
de la solución a ese problema, de tal manera
que se puede utilizar esta solución un millón
de veces, sin tener que hacerlo de la misma
manera dos veces”
¿Qué es un patrón de software?
• Solución probada a un problema recurrente.
• Solución reutilizable a un problema común en un
contexto dado.
Patrones GOF
Patrones GOF
Gang of Four:
• Ralph Johnson
• Erich Gamma
• Richard Helm
• John Vlissides
Clasificación de los patrones GOF
• Propósito
• Refleja lo que hace un patrón
• Se divide en Patrones de Creación , Estructura y
Comportamiento
• Alcance
• Especifica si el patrón se aplica principalmente a clases
u objetos
Clasificación patrones GOF
Patrones de creación
Patrones de creación
• Factory Method: crea una instancia de varias clases
derivadas
• Abstract Factory: crea una instancia de varias familias de
clases
• Builder
Separa la construcción de un objeto de su representación
• Prototype: genera una instancia y la inicializa, que puede ser
copiada o colgada.
• Singleton: una clase de la cual solo puede existir una única
instancia
Factory Method
• Problema: una clase no puede anticipar la clase de
objetos que debe crear. Una clase quiere sus
subclases especifiquen los objetos que crean.
• Contexto: los frameworks utilizan clases abstractas
para definir y mantener las relaciones entre objetos.
Una responsabilidad es crear tales objetos.
• Solución: definir una interfaz para crear un objeto, pero
dejando la elección de su tipo a las subclases, la
creación se aplaza hasta el tiempo de ejecución.
Factory Method Patrones de creación
Participantes Factory Method
• Product: define la interfaz para los objetos que
FactoryMethod crea.
• ConcreteProduct: implementa la interfaz Product.
• Creator(o Factory): declara el método FactoryMethod,
que devuelve un objeto Producto. Puede llamar al
método de generación para la creación de objetos
Product
• ConcreteCreator: sobre-escribe el método de
generación para crear objetos ConcreteProduct.
Abstract Factory
• Problema: se desea proporcionar una biblioteca de
clases de productos. También se quiere revelar sólo
sus interfaces, no sus implementaciones.
• Contexto: evitar añadir código a las clases existentes
con el fin de hacer que encapsule información más
general.
• Solución: proporcionar una interfaz para crear familias
de objetos relacionados o dependientes sin especificar
sus clases concretas.
Abstract Factory Patrones de creación
Participantes Abstract Factory
• AbstractFactory: declara una interfaz para las operaciones que
crean AbstractProduct.
• ConcreteFactory: implementa operaciones para crear Product
concretos.
• AbstractProduct: declara una interfaz para un tipo de objetos
Product.
• Product: define un producto a ser creado por el ConcreteFactory
correspondiente; que implementa la interfaz AbstractProduct.
• Client: utiliza las interfaces declaradas por las clases
AbstractFactory y AbstractProduct.
Builder
• Problema: cuanto más complejo es una aplicación, la
complejidad de las clases y los objetos que utiliza
aumenta.
• Contexto: una aplicación necesitar un mecanismo para
la creación de objetos complejos que es independiente
de los que componen el objeto.
• Solución: define una instancia para la creación de un
objeto dejando que las subclases decidan qué clase
instanciar.
Builder Patrones de creación
Participantes Builder
• Builder: especifica una interfaz abstracta para crear
partes de un objeto de Product.
• ConcreteBuilder: construye une las partes del producto
mediante la implementación de la interfaz Builder.
• Director: construye el objeto complejo mediante la
interfaz Builder.
• Product: representa el objeto complejo que se está
construyendo.
Singleton
• Asegura que una clase tiene una única instancia y
proveer un punto de acceso global a ella.
• Inicialización "just-in-time" o inicialización "on first use"
encapsulada.
Singleton Patrones de creación
Patrones de estructura
Patrones de estructura
• Adapter: relaciona interfaces de diferentes clases.
• Bridge: separa la interfaz de un objeto de su implementación.
• Composite: una estructura de árbol de objetos simples y
compuestos.
• Decorator: añadir responsabilidades a los objetos
dinámicamente.
• Facade: una única clase que representa todo un subsistema.
• Flyweight: una instancia usada para compartir de manera
eficiente.
• Proxy: un objeto que representa a otro objeto.
Adapter
• Problema: se desea utilizar una clase existente, y su
interfaz no coincide con la que necesita. Aplica de igual
modo cuando se quieren crear clases reutilizables que
cooperen con clases sin relación o imprevistas.
• Contexto: relacionar dos componentes que no tienen
una interfaz común.
• Solución: convertir la interfaz de una clase en otra
interfaz que el clientes espera.
Adapter Patrones de estructura
Participantes Adapter
• Target: define la interfaz de dominio específico que
utiliza Client.
• Adapter: adapta la interfaz Adaptee para la interfaz de
destino.
• Adaptee: define una interfaz existente que necesita
adaptarse.
• Client: colabora con objetos de acuerdo con la interfaz
Target.
Facade
• Problema: proveer una interfaz simple a un subsistema
complejo.
• Contexto: minimizar la comunicación y dependencias
entre subsistemas.
• Solución: proporcionar una interfaz unificada para un
conjunto de interfaces de un subsistema.
Facade Patrones de estructura
Participantes Facade
• Façade: conoce cuáles clases del subsistema son
responsables por una petición y delegan peticiones del
cliente a los objetos del subsistema apropiado.
• Clases del subsistema: Implementan una funcionalidad
del subsistema y llevan a cabo el trabajo asignado por
el objeto Façade.
Patrones de comportamiento
Command
• Problema: especificar, encolar y ejecutar peticiones en
diferentes tiempos. Aplica también para callbacks.
• Contexto: emisión de peticiones a objetos sin saber
nada de la operación que se solicite o el receptor de la
solicitud.
• Solución: encapsular una petición como un objeto y
almacenar las peticiones en una cola.
Command Patrones comportamiento
Participantes Command
• Command: declara una interfaz para ejecutar una
operación.
• ConcreteCommand: extiende de Command para
implementar el método ejecute al invocar las operaciones
correspondientes en el Receiver.
• Invoker: le pide al Command que ejecute la petición.
• Receiver: sabe cómo ejecutar las operaciones.
• Client: crea un objeto ConcreteCommand y le asigna su
Receiver.
Observer
• Problema: un cambio en un objeto requiere cambios en
otros,y no se sabe cuántos objetos necesitan ser
cambiados. Una abstracción tiene dos aspectos
dependientes.
• Contexto: al fragmentar un sistema en una colección de
clases cooperativas, se requiere mantener la
consistencia entre objetos relacionados.
• Solución: definir un dependencia uno-a-muchos entre
objetos, para que al cambiar un objeto, todos sus
dependientes sean notificados automáticamente.
Observer Patrones de comportamiento
Participantes Observer
• Observable: declara una interfaz para añadir o remover
Observers del cliente.
• ConcreteObservable: extiende Observable. Mantiene el
estado del objeto y cuando cambia, notifica a los
Observers ligados.
• Observer: interfaz que define las operaciones a ser
usadas para notificar a este objeto.
• ConcreteObserverA, ConcreteObserver2:
implementaciones concretas de Observer.
Strategy
• Problema: se requieren diferentes variantes de un
algoritmo.
• Contexto: clases relacionadas sólo difieren en su
comportamiento.
• Solución: define una familia de algoritmos, los
encapsula, y los hace intercambiables.
Strategy Patrones de comportamiento
Participantes Strategy
• Strategy: declara una interfaz para soportar todos los
algoritmos
• ConcreteStrategy: extiende a Strategy. Cada
ConcreteStrategy implementa un algoritmo.
• Context: mantiene una referencia al objeto Strategy y
define una interfaz para una interface que deja a
Strategy accesar sus datos.
Bibliografía
Bibliografía
• Gamma, Erich; Helm, Richard; Johnson, Ralph;
Vlissides, John(1995). Design Patterns: Elements of
Reusable Object-Oriented Software. Reading,
Massachusetts: Addison Wesley Longman, Inc.

Más contenido relacionado

La actualidad más candente

Linea de productos de software y Metodo Watch
Linea de productos de software y Metodo WatchLinea de productos de software y Metodo Watch
Linea de productos de software y Metodo Watch
GrabielleBarreto
 
IDR Unidad 1: Introducción y proceso de Ingeniería de requerimientos
IDR Unidad 1: Introducción y proceso de Ingeniería de requerimientosIDR Unidad 1: Introducción y proceso de Ingeniería de requerimientos
IDR Unidad 1: Introducción y proceso de Ingeniería de requerimientos
Franklin Parrales Bravo
 
IMPORTANCIA DEL ANÁLISIS DE REQUERIMIENTOS PARA EL DESARROLLO DE SISTEMAS
IMPORTANCIA DEL ANÁLISIS DE REQUERIMIENTOS PARA EL DESARROLLO DE SISTEMASIMPORTANCIA DEL ANÁLISIS DE REQUERIMIENTOS PARA EL DESARROLLO DE SISTEMAS
IMPORTANCIA DEL ANÁLISIS DE REQUERIMIENTOS PARA EL DESARROLLO DE SISTEMAS
Alcoverify
 
Arquitectura de software
Arquitectura de softwareArquitectura de software
Arquitectura de softwareLiliana Pacheco
 
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
 
LINEAS DE PRODUCTOS DE SOFTWARE Y MÉTODO WATCH
LINEAS DE PRODUCTOS DE SOFTWARE Y MÉTODO WATCHLINEAS DE PRODUCTOS DE SOFTWARE Y MÉTODO WATCH
LINEAS DE PRODUCTOS DE SOFTWARE Y MÉTODO WATCH
PerozoAlejandro
 
Ingenieria de requisitos y requerimientos
Ingenieria de requisitos y requerimientosIngenieria de requisitos y requerimientos
Ingenieria de requisitos y requerimientos
Isidro Gonzalez
 
Diseño orientado a objeto
Diseño orientado a objetoDiseño orientado a objeto
Metodologia xp cortesserranoeliud
Metodologia xp cortesserranoeliudMetodologia xp cortesserranoeliud
Metodologia xp cortesserranoeliud
Eliud Cortes
 
Técnicas para la Obtención de Requerimientos
Técnicas para la Obtención de RequerimientosTécnicas para la Obtención de Requerimientos
Técnicas para la Obtención de Requerimientos
Juan Carlos Olivares Rojas
 
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
 
Ciclo Vida del Software
Ciclo Vida del SoftwareCiclo Vida del Software
Ciclo Vida del Software
Wilfredo Mogollón
 
Estilos y Patrones Aplicables a la Arquitectura de Software
Estilos y Patrones Aplicables a la Arquitectura de SoftwareEstilos y Patrones Aplicables a la Arquitectura de Software
Estilos y Patrones Aplicables a la Arquitectura de Software
Diego Plascencia Lara
 
Presentacion Patrones Creacionales
Presentacion Patrones CreacionalesPresentacion Patrones Creacionales
Presentacion Patrones Creacionales
Sergio David Fernández
 
Modelos de Procesos de Software
Modelos de Procesos de SoftwareModelos de Procesos de Software
Modelos de Procesos de Software
Jiuseppe Flores
 
Presentación Modelo de Datos
Presentación Modelo de DatosPresentación Modelo de Datos
Presentación Modelo de Datos
Enrique Cabello
 
Metamodelo UML
Metamodelo UMLMetamodelo UML

La actualidad más candente (20)

Linea de productos de software y Metodo Watch
Linea de productos de software y Metodo WatchLinea de productos de software y Metodo Watch
Linea de productos de software y Metodo Watch
 
Ieee 830
Ieee 830Ieee 830
Ieee 830
 
Arquitectura de Software
Arquitectura de SoftwareArquitectura de Software
Arquitectura de Software
 
IDR Unidad 1: Introducción y proceso de Ingeniería de requerimientos
IDR Unidad 1: Introducción y proceso de Ingeniería de requerimientosIDR Unidad 1: Introducción y proceso de Ingeniería de requerimientos
IDR Unidad 1: Introducción y proceso de Ingeniería de requerimientos
 
IMPORTANCIA DEL ANÁLISIS DE REQUERIMIENTOS PARA EL DESARROLLO DE SISTEMAS
IMPORTANCIA DEL ANÁLISIS DE REQUERIMIENTOS PARA EL DESARROLLO DE SISTEMASIMPORTANCIA DEL ANÁLISIS DE REQUERIMIENTOS PARA EL DESARROLLO DE SISTEMAS
IMPORTANCIA DEL ANÁLISIS DE REQUERIMIENTOS PARA EL DESARROLLO DE SISTEMAS
 
Arquitectura de software
Arquitectura de softwareArquitectura de software
Arquitectura de software
 
Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de software
 
LINEAS DE PRODUCTOS DE SOFTWARE Y MÉTODO WATCH
LINEAS DE PRODUCTOS DE SOFTWARE Y MÉTODO WATCHLINEAS DE PRODUCTOS DE SOFTWARE Y MÉTODO WATCH
LINEAS DE PRODUCTOS DE SOFTWARE Y MÉTODO WATCH
 
Ingenieria de requisitos y requerimientos
Ingenieria de requisitos y requerimientosIngenieria de requisitos y requerimientos
Ingenieria de requisitos y requerimientos
 
Diseño orientado a objeto
Diseño orientado a objetoDiseño orientado a objeto
Diseño orientado a objeto
 
Metodologia xp cortesserranoeliud
Metodologia xp cortesserranoeliudMetodologia xp cortesserranoeliud
Metodologia xp cortesserranoeliud
 
Técnicas para la Obtención de Requerimientos
Técnicas para la Obtención de RequerimientosTécnicas para la Obtención de Requerimientos
Técnicas para la Obtención de Requerimientos
 
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
 
Ciclo Vida del Software
Ciclo Vida del SoftwareCiclo Vida del Software
Ciclo Vida del Software
 
Estilos y Patrones Aplicables a la Arquitectura de Software
Estilos y Patrones Aplicables a la Arquitectura de SoftwareEstilos y Patrones Aplicables a la Arquitectura de Software
Estilos y Patrones Aplicables a la Arquitectura de Software
 
Presentacion Patrones Creacionales
Presentacion Patrones CreacionalesPresentacion Patrones Creacionales
Presentacion Patrones Creacionales
 
Modelos de Procesos de Software
Modelos de Procesos de SoftwareModelos de Procesos de Software
Modelos de Procesos de Software
 
Ieee 830
Ieee 830Ieee 830
Ieee 830
 
Presentación Modelo de Datos
Presentación Modelo de DatosPresentación Modelo de Datos
Presentación Modelo de Datos
 
Metamodelo UML
Metamodelo UMLMetamodelo UML
Metamodelo UML
 

Destacado

Código Limpio
Código LimpioCódigo Limpio
Patron Template
Patron TemplatePatron Template
Patron Template
An3s
 
La nube. Cloud computting
La nube. Cloud computtingLa nube. Cloud computting
La nube. Cloud computting
Joan Sebastián Ramírez Pérez
 
Microservicios
MicroserviciosMicroservicios
Roles scrum
Roles scrumRoles scrum
Patrones para asignar responsabilidades. grasp
Patrones para asignar responsabilidades. graspPatrones para asignar responsabilidades. grasp
Patrones para asignar responsabilidades. grasp
Juan Pablo Bustos Thames
 
Servicios web
Servicios webServicios web
Calidad en el desarrollo del software
Calidad en el desarrollo del softwareCalidad en el desarrollo del software
Calidad en el desarrollo del software
Joan Sebastián Ramírez Pérez
 
"Mexico - Uso de la tecnología para la captura de datos en el campo y su comp...
"Mexico - Uso de la tecnología para la captura de datos en el campo y su comp..."Mexico - Uso de la tecnología para la captura de datos en el campo y su comp...
"Mexico - Uso de la tecnología para la captura de datos en el campo y su comp...
FAO
 

Destacado (9)

Código Limpio
Código LimpioCódigo Limpio
Código Limpio
 
Patron Template
Patron TemplatePatron Template
Patron Template
 
La nube. Cloud computting
La nube. Cloud computtingLa nube. Cloud computting
La nube. Cloud computting
 
Microservicios
MicroserviciosMicroservicios
Microservicios
 
Roles scrum
Roles scrumRoles scrum
Roles scrum
 
Patrones para asignar responsabilidades. grasp
Patrones para asignar responsabilidades. graspPatrones para asignar responsabilidades. grasp
Patrones para asignar responsabilidades. grasp
 
Servicios web
Servicios webServicios web
Servicios web
 
Calidad en el desarrollo del software
Calidad en el desarrollo del softwareCalidad en el desarrollo del software
Calidad en el desarrollo del software
 
"Mexico - Uso de la tecnología para la captura de datos en el campo y su comp...
"Mexico - Uso de la tecnología para la captura de datos en el campo y su comp..."Mexico - Uso de la tecnología para la captura de datos en el campo y su comp...
"Mexico - Uso de la tecnología para la captura de datos en el campo y su comp...
 

Similar a Patrones GOF

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
 
6070_TRECALDE_00288.ppt
6070_TRECALDE_00288.ppt6070_TRECALDE_00288.ppt
6070_TRECALDE_00288.ppt
Hector Manuel Vanegas Solis
 
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
Patrones de diseñoPatrones de diseño
Patrones de diseño
Kelly Cuervo
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
jjegonzalezf
 
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 II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño IIkaolong
 
Buider Patron de Diseño
Buider Patron de DiseñoBuider Patron de Diseño
Buider Patron de DiseñoMario Cabrera
 
Patrones estructurados
Patrones estructuradosPatrones estructurados
Patrones estructurados
Ismael Armijos
 
patronesdiseño2009.ppt
patronesdiseño2009.pptpatronesdiseño2009.ppt
patronesdiseño2009.ppt
OscargiovanniAndiaMo
 
ANALISIS DE LAS RELACIONES.ppt
ANALISIS DE LAS RELACIONES.pptANALISIS DE LAS RELACIONES.ppt
ANALISIS DE LAS RELACIONES.ppt
RogelioYez1
 
Abstract factory. presentación
Abstract factory. presentaciónAbstract factory. presentación
Abstract factory. presentación
avidal020
 
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
 
manual 9
manual 9manual 9
manual 9
ariannalizeeth
 
MANUAL DE JAVA 2
MANUAL DE JAVA 2MANUAL DE JAVA 2
MANUAL DE JAVA 2
ariannalizeeth
 

Similar a Patrones GOF (20)

Patrones de Diseño de Software
Patrones de Diseño de SoftwarePatrones de Diseño de Software
Patrones de Diseño de Software
 
6070_TRECALDE_00288.ppt
6070_TRECALDE_00288.ppt6070_TRECALDE_00288.ppt
6070_TRECALDE_00288.ppt
 
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
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 
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
 
Abstract Factory
Abstract FactoryAbstract Factory
Abstract Factory
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño II
 
Buider Patron de Diseño
Buider Patron de DiseñoBuider Patron de Diseño
Buider Patron de Diseño
 
Patrones estructurados
Patrones estructuradosPatrones estructurados
Patrones estructurados
 
patronesdiseño2009.ppt
patronesdiseño2009.pptpatronesdiseño2009.ppt
patronesdiseño2009.ppt
 
ANALISIS DE LAS RELACIONES.ppt
ANALISIS DE LAS RELACIONES.pptANALISIS DE LAS RELACIONES.ppt
ANALISIS DE LAS RELACIONES.ppt
 
chuy
chuy chuy
chuy
 
Abstract factory. presentación
Abstract factory. presentaciónAbstract factory. presentación
Abstract factory. presentación
 
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
 
Manual de java_2
Manual de java_2Manual de java_2
Manual de java_2
 
manual 9
manual 9manual 9
manual 9
 
Manual de java 3
Manual de java 3Manual de java 3
Manual de java 3
 
MANUAL DE JAVA 2
MANUAL DE JAVA 2MANUAL DE JAVA 2
MANUAL DE JAVA 2
 

Más de Joan Sebastián Ramírez Pérez

Clean architecture
Clean architectureClean architecture
Practicas tecnicas
Practicas tecnicasPracticas tecnicas
Bddtddatdd
BddtddatddBddtddatdd
Pruebas automaticas
Pruebas automaticasPruebas automaticas
Pruebas automaticas
Joan Sebastián Ramírez Pérez
 
Orm
OrmOrm
Control de versiones
Control de versionesControl de versiones
Control de versiones
Joan Sebastián Ramírez Pérez
 
Practicas técnicas
Practicas técnicasPracticas técnicas
Practicas técnicas
Joan Sebastián Ramírez Pérez
 
Principios SOLID
Principios SOLIDPrincipios SOLID
Código Limpio
Código LimpioCódigo Limpio
Modelo diseño
Modelo diseñoModelo diseño
Refactor y deuda técnica
Refactor y deuda técnicaRefactor y deuda técnica
Refactor y deuda técnica
Joan Sebastián Ramírez Pérez
 
Diagramas comportamiento
Diagramas comportamientoDiagramas comportamiento
Diagramas comportamiento
Joan Sebastián Ramírez Pérez
 
Pruebas automaticas
Pruebas automaticasPruebas automaticas
Pruebas automaticas
Joan Sebastián Ramírez Pérez
 
MVC
MVCMVC
Uml
UmlUml
Modelo negocio
Modelo negocioModelo negocio
Retrospectiva
RetrospectivaRetrospectiva

Más de Joan Sebastián Ramírez Pérez (20)

Clean architecture
Clean architectureClean architecture
Clean architecture
 
Practicas tecnicas
Practicas tecnicasPracticas tecnicas
Practicas tecnicas
 
Bddtddatdd
BddtddatddBddtddatdd
Bddtddatdd
 
Pruebas automaticas
Pruebas automaticasPruebas automaticas
Pruebas automaticas
 
Orm
OrmOrm
Orm
 
Control de versiones
Control de versionesControl de versiones
Control de versiones
 
Ciclo devida
Ciclo devidaCiclo devida
Ciclo devida
 
Practicas técnicas
Practicas técnicasPracticas técnicas
Practicas técnicas
 
Lean startup
Lean startupLean startup
Lean startup
 
Principios SOLID
Principios SOLIDPrincipios SOLID
Principios SOLID
 
Código Limpio
Código LimpioCódigo Limpio
Código Limpio
 
Modelo diseño
Modelo diseñoModelo diseño
Modelo diseño
 
Refactor y deuda técnica
Refactor y deuda técnicaRefactor y deuda técnica
Refactor y deuda técnica
 
Diagramas comportamiento
Diagramas comportamientoDiagramas comportamiento
Diagramas comportamiento
 
Pruebas automaticas
Pruebas automaticasPruebas automaticas
Pruebas automaticas
 
Lean canvas
Lean canvasLean canvas
Lean canvas
 
MVC
MVCMVC
MVC
 
Uml
UmlUml
Uml
 
Modelo negocio
Modelo negocioModelo negocio
Modelo negocio
 
Retrospectiva
RetrospectivaRetrospectiva
Retrospectiva
 

Último

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
 
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
 
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
 
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
 
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.
 
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
 
PitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitalesPitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitales
juanorejuela499
 
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
 
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)

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
 
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
 
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
 
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...
 
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
 
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
 
PitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitalesPitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitales
 
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
 
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 GOF

  • 1. Patrones GOF Joan Sebastián Ramírez Pérez 2016
  • 2. Agenda • ¿Qué es un patrón de diseño? • Patrones GOF • Patrones de creación • Patrones de estructura • Patrones de comportamiento • Bibliografía
  • 3. ¿Qué es un patrón de software?
  • 4. 1977, A Pattern Language, Christopher Alexander “Cada patrón describe un problema que ocurre una y otra vez en nuestro medio ambiente y, a continuación describe el núcleo de la solución a ese problema, de tal manera que se puede utilizar esta solución un millón de veces, sin tener que hacerlo de la misma manera dos veces”
  • 5. ¿Qué es un patrón de software? • Solución probada a un problema recurrente. • Solución reutilizable a un problema común en un contexto dado.
  • 7. Patrones GOF Gang of Four: • Ralph Johnson • Erich Gamma • Richard Helm • John Vlissides
  • 8. Clasificación de los patrones GOF • Propósito • Refleja lo que hace un patrón • Se divide en Patrones de Creación , Estructura y Comportamiento • Alcance • Especifica si el patrón se aplica principalmente a clases u objetos
  • 11. Patrones de creación • Factory Method: crea una instancia de varias clases derivadas • Abstract Factory: crea una instancia de varias familias de clases • Builder Separa la construcción de un objeto de su representación • Prototype: genera una instancia y la inicializa, que puede ser copiada o colgada. • Singleton: una clase de la cual solo puede existir una única instancia
  • 12. Factory Method • Problema: una clase no puede anticipar la clase de objetos que debe crear. Una clase quiere sus subclases especifiquen los objetos que crean. • Contexto: los frameworks utilizan clases abstractas para definir y mantener las relaciones entre objetos. Una responsabilidad es crear tales objetos. • Solución: definir una interfaz para crear un objeto, pero dejando la elección de su tipo a las subclases, la creación se aplaza hasta el tiempo de ejecución.
  • 13. Factory Method Patrones de creación
  • 14. Participantes Factory Method • Product: define la interfaz para los objetos que FactoryMethod crea. • ConcreteProduct: implementa la interfaz Product. • Creator(o Factory): declara el método FactoryMethod, que devuelve un objeto Producto. Puede llamar al método de generación para la creación de objetos Product • ConcreteCreator: sobre-escribe el método de generación para crear objetos ConcreteProduct.
  • 15. Abstract Factory • Problema: se desea proporcionar una biblioteca de clases de productos. También se quiere revelar sólo sus interfaces, no sus implementaciones. • Contexto: evitar añadir código a las clases existentes con el fin de hacer que encapsule información más general. • Solución: proporcionar una interfaz para crear familias de objetos relacionados o dependientes sin especificar sus clases concretas.
  • 17. Participantes Abstract Factory • AbstractFactory: declara una interfaz para las operaciones que crean AbstractProduct. • ConcreteFactory: implementa operaciones para crear Product concretos. • AbstractProduct: declara una interfaz para un tipo de objetos Product. • Product: define un producto a ser creado por el ConcreteFactory correspondiente; que implementa la interfaz AbstractProduct. • Client: utiliza las interfaces declaradas por las clases AbstractFactory y AbstractProduct.
  • 18. Builder • Problema: cuanto más complejo es una aplicación, la complejidad de las clases y los objetos que utiliza aumenta. • Contexto: una aplicación necesitar un mecanismo para la creación de objetos complejos que es independiente de los que componen el objeto. • Solución: define una instancia para la creación de un objeto dejando que las subclases decidan qué clase instanciar.
  • 19. Builder Patrones de creación
  • 20. Participantes Builder • Builder: especifica una interfaz abstracta para crear partes de un objeto de Product. • ConcreteBuilder: construye une las partes del producto mediante la implementación de la interfaz Builder. • Director: construye el objeto complejo mediante la interfaz Builder. • Product: representa el objeto complejo que se está construyendo.
  • 21. Singleton • Asegura que una clase tiene una única instancia y proveer un punto de acceso global a ella. • Inicialización "just-in-time" o inicialización "on first use" encapsulada.
  • 24. Patrones de estructura • Adapter: relaciona interfaces de diferentes clases. • Bridge: separa la interfaz de un objeto de su implementación. • Composite: una estructura de árbol de objetos simples y compuestos. • Decorator: añadir responsabilidades a los objetos dinámicamente. • Facade: una única clase que representa todo un subsistema. • Flyweight: una instancia usada para compartir de manera eficiente. • Proxy: un objeto que representa a otro objeto.
  • 25. Adapter • Problema: se desea utilizar una clase existente, y su interfaz no coincide con la que necesita. Aplica de igual modo cuando se quieren crear clases reutilizables que cooperen con clases sin relación o imprevistas. • Contexto: relacionar dos componentes que no tienen una interfaz común. • Solución: convertir la interfaz de una clase en otra interfaz que el clientes espera.
  • 26. Adapter Patrones de estructura
  • 27. Participantes Adapter • Target: define la interfaz de dominio específico que utiliza Client. • Adapter: adapta la interfaz Adaptee para la interfaz de destino. • Adaptee: define una interfaz existente que necesita adaptarse. • Client: colabora con objetos de acuerdo con la interfaz Target.
  • 28. Facade • Problema: proveer una interfaz simple a un subsistema complejo. • Contexto: minimizar la comunicación y dependencias entre subsistemas. • Solución: proporcionar una interfaz unificada para un conjunto de interfaces de un subsistema.
  • 29. Facade Patrones de estructura
  • 30. Participantes Facade • Façade: conoce cuáles clases del subsistema son responsables por una petición y delegan peticiones del cliente a los objetos del subsistema apropiado. • Clases del subsistema: Implementan una funcionalidad del subsistema y llevan a cabo el trabajo asignado por el objeto Façade.
  • 32. Command • Problema: especificar, encolar y ejecutar peticiones en diferentes tiempos. Aplica también para callbacks. • Contexto: emisión de peticiones a objetos sin saber nada de la operación que se solicite o el receptor de la solicitud. • Solución: encapsular una petición como un objeto y almacenar las peticiones en una cola.
  • 34. Participantes Command • Command: declara una interfaz para ejecutar una operación. • ConcreteCommand: extiende de Command para implementar el método ejecute al invocar las operaciones correspondientes en el Receiver. • Invoker: le pide al Command que ejecute la petición. • Receiver: sabe cómo ejecutar las operaciones. • Client: crea un objeto ConcreteCommand y le asigna su Receiver.
  • 35. Observer • Problema: un cambio en un objeto requiere cambios en otros,y no se sabe cuántos objetos necesitan ser cambiados. Una abstracción tiene dos aspectos dependientes. • Contexto: al fragmentar un sistema en una colección de clases cooperativas, se requiere mantener la consistencia entre objetos relacionados. • Solución: definir un dependencia uno-a-muchos entre objetos, para que al cambiar un objeto, todos sus dependientes sean notificados automáticamente.
  • 36. Observer Patrones de comportamiento
  • 37. Participantes Observer • Observable: declara una interfaz para añadir o remover Observers del cliente. • ConcreteObservable: extiende Observable. Mantiene el estado del objeto y cuando cambia, notifica a los Observers ligados. • Observer: interfaz que define las operaciones a ser usadas para notificar a este objeto. • ConcreteObserverA, ConcreteObserver2: implementaciones concretas de Observer.
  • 38. Strategy • Problema: se requieren diferentes variantes de un algoritmo. • Contexto: clases relacionadas sólo difieren en su comportamiento. • Solución: define una familia de algoritmos, los encapsula, y los hace intercambiables.
  • 39. Strategy Patrones de comportamiento
  • 40. Participantes Strategy • Strategy: declara una interfaz para soportar todos los algoritmos • ConcreteStrategy: extiende a Strategy. Cada ConcreteStrategy implementa un algoritmo. • Context: mantiene una referencia al objeto Strategy y define una interfaz para una interface que deja a Strategy accesar sus datos.
  • 42. Bibliografía • Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John(1995). Design Patterns: Elements of Reusable Object-Oriented Software. Reading, Massachusetts: Addison Wesley Longman, Inc.