SlideShare a Scribd company logo
1 of 6
Patrón de Diseño
Un patróndescribe unproblemaqueocurre unayotravezennuestroentorno,asícomolasolución
a ese problema, de tal modo que se pueda aplicar esta solución varias veces, y tiene cuatro
elementos esenciales.
Nombre del patrón: Describe un problema de diseño junto con sus soluciones y consecuencias.
Problema: Explica el problema y cuando se debe aplicar el patrón.
Solución:Describe comouna plantilla,lacual se puede aplicar en muchas situaciones diferentes.
Consecuencias: Son los resultados, así como las ventajas e inconvenientes de aplicar el patrón.
Los patrones de diseño no se ocupan de diseños que pueden codificarse en clases y reutilizarse
como tales, sinoque sondescripcionesde clasesyobjetosrelacionadosque están particularizados
para resolver un problema de diseño general en un determinado contexto.
Un patrón de diseño nomina, abstrae e identifica los aspectos clave de una estructura de diseño
común y cada patrón de diseño se centra en un problema concreto.
Patrones de diseño en el MVC
Modelo, Vista, Controlador se usa para construir interfaces de usuario y consiste en tres tipos de
objetos.
Modelo: es el objeto de aplicación.
Vista: es la representación en pantalla.
Controlador: define el modo en que la interfaz reacciona a la entrada del usuario.
MVC desacoplalasvistasde losmodelosyunavistadebe asegurarse de que suaparienciareflejael
estadodel modelo.Cadavezque cambianlosdatosdel modelo,este seencargade avisaralasvistas
que dependen de él.
Cada vista tiene la oportunidad de actualizarse a sí misma, y este enfoque permite asignar varias
vistas a un modelo para ofrecer diferentes presentaciones. El modelo se comunica con sus vistas
cuando cambian sus valores, y las vistas se comunican con el modelo para acceder a estos.
MVC permite vistas anidadas gracias a la clase VistaCompuesta, una subclase de vista. También
permite cambiar el modo en que una vista responde a la entrada de usuario sin cambiar su
representación visual; además encapsula el mecanismo de respuesta en un objeto controlador.
Una vista usa una instancia de una subclase de controlador para implementar una determinada
estrategia de respuesta. Incluso es posible cambiar el controlador de una vista en tiempo de
ejecución, para hacer que la vista cambie el modo en que responde a la entrada de usuario.
Descripción de los patrones de diseño
Cada patrón se divide en secciones para que sean más fáciles de aprender, comparar y usar.
Nombre del patrón y clasificación: nombre que pasara a nuestro vocabulario de diseño.
Propósito: Que hace este patrón de diseño y en que se basa.
También conocido como: Otros nombres por los que se conoce el patrón.
Motivación: Como las estructuras de clases y objetos del patrón resuelven el problema.
Aplicabilidad: Situaciones en las que se puede aplicar el patrón de diseño.
Estructura: Representación gráfica de las clases del patrón.
Participantes: Las clases y objetos participantes en el patrón de diseño.
Colaboraciones: como colaboran los participantes para llevar a cabo sus responsabilidades.
Consecuencias: Resultados de usar el patrón.
Implementación: Acciones que se deben tener en cuenta a la hora de aplicar el patrón.
Código de ejemplo: Código que muestra cómo se puede implementar el patrón.
Usos conocidos: Ejemplos del patrón en sistemas reales.
Patrones relacionados: Patrones que están relacionados.
Catálogo de patrones de diseño.
Patrones de diseño con sus propósitos.
Abstract Factory: Proporciona una interfaz para crear familias de objetos relacionados.
Adapter: Permite que cooperen clases, ya que no podrían hacerlo con interfaces incompatibles.
Bridge: Desacopla una abstracción de su implementación.
Builder: Separa la construcción de un objeto complejo de su representación.
Chainof responsibility:Creaunacadenaconlosobjetosreceptoresypasalapeticiónporlamisma.
Command: Encapsula una petición en un objeto, permitiendo llevar un registro.
Composite: Combina objetos en estructuras de árbol para representar jerarquías.
Decorator: Añade dinámicamente nuevas responsabilidades a un objeto.
Facade: Proporciona una interfaz unificada para un conjunto de interfaces de un subsistema.
Factory Method: Permite que una clase delegue en sus subclases la creación de objetos.
Flyweight: Usa el comportamiento para permitir un gran número de objetos de grano fino.
Interpreter: Define una representación de su gramática.
Iterator: Proporciona un modo de acceder secuencialmente a los elementos de un objeto.
Mediator: Define un objeto que encapsula cómo interactúan un conjunto de objetos.
Memento: Guarda el estado interno de un objeto, para poder anular operaciones.
Observer: Define una dependencia de uno a muchos entre objetos.
Prototype: Especifica los tipos de objetos a crear por medio de una instancia prototípica.
Proxy: Proporciona un sustituto o representante de otro objeto para controlar el acceso a este.
Singleton: Garantiza que una clase solo tenga una instancia y acceso global a ella.
State: Un objeto puede modificar su comportamiento cada vez que cambie su estado interno.
Strategy: Define unafamiliade algoritmos,encapsulacadaunode ellosyloshace intercambiables.
Template Method: Permite que las subclases redefinan ciertos pasos del algoritmo.
Visitor: Permite definirunanuevaoperaciónsincambiar las clasesde loselementossobre losque
opera.
Organización del Catalogo
Clasificación de los patrones de diseño, los patrones pueden tener un propósito de creación,
estructural o de comportamiento.
Creación: Tienen que ver con el proceso de creación de objetos.
Estructurales: Tratan con la composición de clases u objetos.
Comportamiento: Caracterizan el modo en que las clases y objetos interactúan.
Como resuelven los patrones los problemas de diseño
Los patrones los solucionan de diferentes formas.
Encontrar los objetos apropiados
Los programas orientados a objetos están formados de objetos, un objeto encapsula tanto datos
como los procedimientos que operan sobre esos datos, estos procedimientos se conoce como
métodos u operaciones. Un objeto realiza una operación cuando recibe una petición.
Especificar las interfaces de los objetos
Al conjunto de todas las signaturas definidas por las operaciones de un objeto se le denomina la
interfaz del objeto.
Un tipo es un nombre que se usa para denotar una determinada interfaz, un objeto puede tener
muchos tipos. Parte de la interfaz de un objeto puede ser caracterizada por un tipo.
Las interfacespuedencontenercomosubconjuntos,otrasinterfaces,losobjetossolose conocena
través de su interfaz. Dos objetos con implementaciones diferentes pueden tener interfaces
idénticas.
La asociaciónentiempode ejecuciónentre unapeticiónaunobjetoyuna de sus operacioneseslo
que se conoce como enlace dinámico,yeste nos permite sustituirobjetosentiempode ejecución
por otros que tengan la misma interfaz.
Especificar las implementaciones de los objetos
La implementación de un objeto queda definida por su clase; la clase especifica los datos, la
representación interna del objeto y define las operaciones que puede realizar.
Los objetosse creaninstanciandounaclase,el objetoesunainstanciade laclase yse puedencrear
muchas instancias parecidas de un objeto instanciando una clase. Cuando una subclase hereda de
una clase padre,incluye lasdefinicionesde todoslosdatosyoperacionesquedefine laclase padre.
Una clase abstractaesaquellaque defineunainterfazcomúnparasussubclases,estadelegaraparte
o toda su implementación en las operaciones definidas en sus subclases.
Las operaciones que una clase abstracta define pero no implementa se denominan operaciones
abstractas y las clases que no son abstractas se denominan clases concretas.
Herencia de clases frente a herencia de interfaces
La clase de un objetodefinecomose implementaunobjeto,el estadointernoylaimplementación
de sus operaciones.
Un objetopuede tenermuchostipos,yobjetosde clasesdiferentespuedentenerel mismotipo,el
tipo de un objeto solo se refiere a su interfaz.
La herenciade clasesdefine laimplementaciónde unobjetoentérminosde la implementaciónde
otroobjeto,encambiolaherenciade interfacesdescribecuandosepuede usarunobjetoenel lugar
de otro.
Programar para interfaces, no para una implementación
La herenciade clasesnoesmásque unmecanismoparaextenderlafuncionalidadde unaaplicación
reutilizando la funcionalidad de las clases padres, permite definir un nuevo tipo de objetos
basándose en otro y también para definir familias de objetos con interfaces idénticas.
Cuando la herencia se usa correctamente, todas las clases que derivan de una clase abstracta
compartirán su interfaz.
Al manipularlosobjetossolamente entérminosde lainterfazdefinidaporlasclasesabstractas,los
clientes no tienen que conocer los tipos específicos de los objetos que usan.
Poner a funcionar los mecanismos de reutilización
Herencia frente a composición
Las dos técnicasmás comunesparareutilizarfuncionalidadensistemasorientadosaobjetossonla
herencia de clases y la composición de objetos.
La herencia de clases permite definir una implementaciónen términos de otra, a esta forma de
reutilización mediante herencia se la denomina reutilización de caja blanca, que se refiere a
visibilidad porque las clases padres suelen hacerse visibles a las subclases.
La composiciónde objetosesunaalternativaa la herenciade clases,estarequiere que losobjetos
a componertenganinterfacesbiendefinidas,estetipode reutilizaciónse denominareutilizaciónde
caja negra, porque los detalles internos de los objetos no son visibles.
La composiciónde objetosse definedinámicamente entiempode ejecuciónatravésde objetosque
tienenreferenciasaotrosobjetos,ademásrequiere que los objetostenganencuentalasinterfaces
de los otros.
Reutilizar mediante la herencia hace más fácil construir nuevos componentes que puedan ser
combinados con los antiguos. La herencia y la composición trabajan por lo tanto juntas.
Delegación
La delegaciónesunmodo de lograr que la composiciónseatan potente parala reutilizacióncomo
lo es la herencia.
La principal ventajade ladelegaciónesque haceque seafácilcombinarcomportamientosentiempo
de ejecución y cambiar la manera en que estos se combinan. La delegación es una buena elección
de diseñosolocuandosimplificamásdeloquecomplicayfuncionamejorcuandoseusaenpatrones
estándar. La delegación es un ejemplo extremo de composición de objetos.
Herencia frente a tipos parametrizados
Tipos parametrizados, es una técnica para reutilizar funcionalidad, también conocidos como
genéricos, esta técnica nos permite definir un tipo sin especificar todos los otros tipos que usa.
Los tipos sin especificar se proporcionan como parámetros cuando se va a usar el tipo
parametrizado.Lostiposparametrizadospermitencambiarlostipos que puede utilizar una clase.
Estructuras que relacionan tiempo de ejecución y tiempo de compilación
La estructura en tiempo de ejecución de un programa orientado a objetos suele guardar poco
parecidoconla estructurade su código.La estructuradel códigose fijaentiempode compilacióny
consiste en clases con relaciones de herencia estáticas.
Distinción entre agregación y asociación.-
Agregación:
- Implica que un objeto posee a otro o que es responsable de él.
- Implica que el objeto agregado y su propietario tienen la misma vida.
- Las relaciones tienden a ser menos y más permanentes que las de asociación.
Asociación:
- Implicaque unobjetosimplemente conoce a otro, denominada también relación de uso.
- Las relacionesse hacenydeshacenmuchomásfrecuentemente yalgunasvecessoloexisten
mientras dura una operación.
Diseñar para el cambio
Para maximizar la reutilización reside en anticipar nuevos requisitos y cambios en los requisitos
existentes.Undiseñoquenotengaencuentael cambiosufre el riesgode tenerque serrediseñado
por completo en el futuro.
El rediseño afecta a muchas partes del sistema software, por lo que los cambios no previstos
siempre resultan costosos.
Programas de aplicación
En la construcción de un programa de aplicación, como un editor de documentos o una hoja de
cálculo, la reutilización interna, la facilidad de mantenimiento y la extensión son las principales
prioridades.
Lospatronesde diseñotambiénhacenqueunaaplicaciónseamásfácil de mantenercuandose usan
para limitar las dependencias de plataforma y para organizar un sistema en capas.
Toolkits
Un toolkit es un conjunto de clases relacionadas y reutilizables, una aplicación incorpora clases de
una o más bibliotecas de clases predefinidas llamadas toolkit. Proporcionan funcionalidad que
puede ayudar a que la aplicación haga su trabajo y se centra en la reutilización de código.
Frameworks
Un framework es un conjunto de clases cooperantes que constituyen un diseño reutilizable para
una clase específica de software. El framework determina la arquitectura de nuestra aplicación.
Los patrones y los frameworks son diferentes en que, los patrones de diseño tienen que ser
implementados cada vez que se emplean y los frameworks son el modo en que los sistemas
orientados a objetos consiguen la mayor reutilización.

More Related Content

What's hot

Diagrama desecuenciabiblioteca 1
Diagrama desecuenciabiblioteca 1Diagrama desecuenciabiblioteca 1
Diagrama desecuenciabiblioteca 11052403005n
 
Herencia - Programación Orientada a Objetos
Herencia - Programación Orientada a ObjetosHerencia - Programación Orientada a Objetos
Herencia - Programación Orientada a ObjetosMario Villaseñor
 
Principios básicos de usabilidad y accesibilidad
Principios básicos de usabilidad y accesibilidadPrincipios básicos de usabilidad y accesibilidad
Principios básicos de usabilidad y accesibilidadPercy Negrete
 
Modelos de desarrollo de aplicaciones web
Modelos de desarrollo de aplicaciones webModelos de desarrollo de aplicaciones web
Modelos de desarrollo de aplicaciones webYaskelly Yedra
 
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)Sergio Sanchez
 
Poo 3 herencia
Poo 3 herenciaPoo 3 herencia
Poo 3 herenciajlmanmons
 
UML. un analisis comparativo para la diagramación de software
UML.  un analisis comparativo para la diagramación de softwareUML.  un analisis comparativo para la diagramación de software
UML. un analisis comparativo para la diagramación de softwareYaskelly Yedra
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clasesNedoww Haw
 
Diferencia entre Swing y Awt
Diferencia entre Swing y AwtDiferencia entre Swing y Awt
Diferencia entre Swing y AwtValentinaCely
 
Otras relaciones y modelos bases de datos
Otras relaciones y modelos bases de datosOtras relaciones y modelos bases de datos
Otras relaciones y modelos bases de datosEmer Gio
 
Algebra booleana
Algebra booleanaAlgebra booleana
Algebra booleanaaeeebi
 
Clase 3 Modelo Entidad Relacion
Clase 3   Modelo Entidad   RelacionClase 3   Modelo Entidad   Relacion
Clase 3 Modelo Entidad Relacionoswchavez
 

What's hot (20)

Diagrama desecuenciabiblioteca 1
Diagrama desecuenciabiblioteca 1Diagrama desecuenciabiblioteca 1
Diagrama desecuenciabiblioteca 1
 
Herencia - Programación Orientada a Objetos
Herencia - Programación Orientada a ObjetosHerencia - Programación Orientada a Objetos
Herencia - Programación Orientada a Objetos
 
Principios básicos de usabilidad y accesibilidad
Principios básicos de usabilidad y accesibilidadPrincipios básicos de usabilidad y accesibilidad
Principios básicos de usabilidad y accesibilidad
 
Modelos de desarrollo de aplicaciones web
Modelos de desarrollo de aplicaciones webModelos de desarrollo de aplicaciones web
Modelos de desarrollo de aplicaciones web
 
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
 
Poo 3 herencia
Poo 3 herenciaPoo 3 herencia
Poo 3 herencia
 
Patron Interprete
Patron InterpretePatron Interprete
Patron Interprete
 
UML. un analisis comparativo para la diagramación de software
UML.  un analisis comparativo para la diagramación de softwareUML.  un analisis comparativo para la diagramación de software
UML. un analisis comparativo para la diagramación de software
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clases
 
U1 s3 introducción a uml parte 1
U1 s3 introducción a uml parte 1U1 s3 introducción a uml parte 1
U1 s3 introducción a uml parte 1
 
Modelo Entidad Relacion
Modelo Entidad RelacionModelo Entidad Relacion
Modelo Entidad Relacion
 
PSeInt
PSeIntPSeInt
PSeInt
 
Diferencia entre Swing y Awt
Diferencia entre Swing y AwtDiferencia entre Swing y Awt
Diferencia entre Swing y Awt
 
Otras relaciones y modelos bases de datos
Otras relaciones y modelos bases de datosOtras relaciones y modelos bases de datos
Otras relaciones y modelos bases de datos
 
Glosario uml
Glosario umlGlosario uml
Glosario uml
 
Algebra booleana
Algebra booleanaAlgebra booleana
Algebra booleana
 
2 Curso de POO en java - modelamiento casos de uso
2 Curso de POO en java - modelamiento casos de uso2 Curso de POO en java - modelamiento casos de uso
2 Curso de POO en java - modelamiento casos de uso
 
Ingenieria web
Ingenieria webIngenieria web
Ingenieria web
 
Clase 3 Modelo Entidad Relacion
Clase 3   Modelo Entidad   RelacionClase 3   Modelo Entidad   Relacion
Clase 3 Modelo Entidad Relacion
 
Introducción a la Programación
Introducción a la Programación Introducción a la Programación
Introducción a la Programación
 

Viewers also liked

A la manière de...PAB
A la manière de...PABA la manière de...PAB
A la manière de...PABcdigrazailles
 
Iles féroé
Iles féroéIles féroé
Iles féroéloik111
 
Taller practico creacion y herramientas de gestión rrss sesión 2
Taller practico creacion y herramientas de gestión rrss sesión 2Taller practico creacion y herramientas de gestión rrss sesión 2
Taller practico creacion y herramientas de gestión rrss sesión 2Gonzalo Garre Rodas
 
Proceso de comunicación
Proceso de comunicaciónProceso de comunicación
Proceso de comunicaciónLelvi Sanchez
 
Achat groupé d'électricité, de gaz, de mazout et de pellets de Charleroi
Achat groupé d'électricité, de gaz, de mazout et de pellets de CharleroiAchat groupé d'électricité, de gaz, de mazout et de pellets de Charleroi
Achat groupé d'électricité, de gaz, de mazout et de pellets de CharleroiWikipower
 
Aventure et rencontre amoureuse possible !
Aventure et rencontre amoureuse possible !Aventure et rencontre amoureuse possible !
Aventure et rencontre amoureuse possible !pascalsevran
 
Vive le vent.pptx2
Vive le vent.pptx2Vive le vent.pptx2
Vive le vent.pptx2sekerach
 
Les marseillais prête main forte à l’inde
Les marseillais prête main forte à l’indeLes marseillais prête main forte à l’inde
Les marseillais prête main forte à l’indeAmélie Jacquet
 
Proyecto 2 Innovación Educativa con Recursos Abiertos
Proyecto 2 Innovación Educativa con Recursos AbiertosProyecto 2 Innovación Educativa con Recursos Abiertos
Proyecto 2 Innovación Educativa con Recursos AbiertosDavid Gomez
 
Ethique et implant cochléaire
Ethique et  implant cochléaireEthique et  implant cochléaire
Ethique et implant cochléaireAmineBenjelloun
 
L'Observatoire COM MEDIA - ça cest passé en 2013
L'Observatoire COM MEDIA - ça cest passé en 2013L'Observatoire COM MEDIA - ça cest passé en 2013
L'Observatoire COM MEDIA - ça cest passé en 2013L'Observatoire COM MEDIA
 
Pablomatinez presentacio llum
Pablomatinez presentacio llumPablomatinez presentacio llum
Pablomatinez presentacio llumgandul_man
 
Memoria curs 2010 11ok-1
Memoria curs 2010 11ok-1Memoria curs 2010 11ok-1
Memoria curs 2010 11ok-12011Edu
 
Acta reunio alumnes
Acta reunio alumnesActa reunio alumnes
Acta reunio alumnes2011Edu
 

Viewers also liked (20)

A la manière de...PAB
A la manière de...PABA la manière de...PAB
A la manière de...PAB
 
AVIS
AVIS AVIS
AVIS
 
Iles féroé
Iles féroéIles féroé
Iles féroé
 
Boletin abril 2012
Boletin abril 2012Boletin abril 2012
Boletin abril 2012
 
Taller practico creacion y herramientas de gestión rrss sesión 2
Taller practico creacion y herramientas de gestión rrss sesión 2Taller practico creacion y herramientas de gestión rrss sesión 2
Taller practico creacion y herramientas de gestión rrss sesión 2
 
Boletn enero 2012
Boletn enero 2012Boletn enero 2012
Boletn enero 2012
 
Taller
TallerTaller
Taller
 
Proceso de comunicación
Proceso de comunicaciónProceso de comunicación
Proceso de comunicación
 
Achat groupé d'électricité, de gaz, de mazout et de pellets de Charleroi
Achat groupé d'électricité, de gaz, de mazout et de pellets de CharleroiAchat groupé d'électricité, de gaz, de mazout et de pellets de Charleroi
Achat groupé d'électricité, de gaz, de mazout et de pellets de Charleroi
 
Aventure et rencontre amoureuse possible !
Aventure et rencontre amoureuse possible !Aventure et rencontre amoureuse possible !
Aventure et rencontre amoureuse possible !
 
Vive le vent.pptx2
Vive le vent.pptx2Vive le vent.pptx2
Vive le vent.pptx2
 
Les marseillais prête main forte à l’inde
Les marseillais prête main forte à l’indeLes marseillais prête main forte à l’inde
Les marseillais prête main forte à l’inde
 
Proyecto 2 Innovación Educativa con Recursos Abiertos
Proyecto 2 Innovación Educativa con Recursos AbiertosProyecto 2 Innovación Educativa con Recursos Abiertos
Proyecto 2 Innovación Educativa con Recursos Abiertos
 
Ethique et implant cochléaire
Ethique et  implant cochléaireEthique et  implant cochléaire
Ethique et implant cochléaire
 
L'Observatoire COM MEDIA - ça cest passé en 2013
L'Observatoire COM MEDIA - ça cest passé en 2013L'Observatoire COM MEDIA - ça cest passé en 2013
L'Observatoire COM MEDIA - ça cest passé en 2013
 
Pablomatinez presentacio llum
Pablomatinez presentacio llumPablomatinez presentacio llum
Pablomatinez presentacio llum
 
Memoria curs 2010 11ok-1
Memoria curs 2010 11ok-1Memoria curs 2010 11ok-1
Memoria curs 2010 11ok-1
 
Acta reunio alumnes
Acta reunio alumnesActa reunio alumnes
Acta reunio alumnes
 
Declaracion ddhh
Declaracion ddhhDeclaracion ddhh
Declaracion ddhh
 
Diapo5 delors
Diapo5 delorsDiapo5 delors
Diapo5 delors
 

Similar to Patrones 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 Vallejo2008PA2Info3
 
Patrones de diseño - Daniel E. Jaramillo
Patrones de diseño - Daniel E. JaramilloPatrones de diseño - Daniel E. Jaramillo
Patrones de diseño - Daniel E. Jaramillo2008PA2Info3
 
Patrones de-diseño-mañana
Patrones de-diseño-mañanaPatrones de-diseño-mañana
Patrones de-diseño-mañanaale abad aguilar
 
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
 
Programacion Orientada a Objetos IE
Programacion Orientada a Objetos IEProgramacion Orientada a Objetos IE
Programacion Orientada a Objetos IEKaren Olan
 
Programación orientado a objetos miranda burgos, armas martinez
Programación orientado a objetos miranda burgos, armas martinezProgramación orientado a objetos miranda burgos, armas martinez
Programación orientado a objetos miranda burgos, armas martinezErnesto Miranda
 
Introduccion a la POO
Introduccion a la POOIntroduccion a la POO
Introduccion a la POOLibertad25
 
Programacion orientada a objetos
Programacion orientada a objetosProgramacion orientada a objetos
Programacion orientada a objetostaly1999
 

Similar to Patrones de diseño (20)

Patrones de diseño - Henry Vallejo
Patrones de diseño - Henry VallejoPatrones de diseño - Henry Vallejo
Patrones de diseño - Henry Vallejo
 
Patrones
PatronesPatrones
Patrones
 
Conceptos poo
Conceptos pooConceptos poo
Conceptos poo
 
Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetos
 
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-mañana
Patrones de-diseño-mañanaPatrones de-diseño-mañana
Patrones de-diseño-mañana
 
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
 
Programacion Orientada a Objetos IE
Programacion Orientada a Objetos IEProgramacion Orientada a Objetos IE
Programacion Orientada a Objetos IE
 
Patron de diseño
Patron de diseñoPatron de diseño
Patron de diseño
 
Programacion visual
Programacion visualProgramacion visual
Programacion visual
 
Programación orientado a objetos miranda burgos, armas martinez
Programación orientado a objetos miranda burgos, armas martinezProgramación orientado a objetos miranda burgos, armas martinez
Programación orientado a objetos miranda burgos, armas martinez
 
Introducción Patrones de Diseño
Introducción Patrones de DiseñoIntroducción Patrones de Diseño
Introducción Patrones de Diseño
 
Programacion orientada a_objetos
Programacion orientada a_objetosProgramacion orientada a_objetos
Programacion orientada a_objetos
 
Introduccion a la POO
Introduccion a la POOIntroduccion a la POO
Introduccion a la POO
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
PRESENTACION
PRESENTACIONPRESENTACION
PRESENTACION
 
INFOGRAFIA.pdf
INFOGRAFIA.pdfINFOGRAFIA.pdf
INFOGRAFIA.pdf
 
chuy
chuy chuy
chuy
 
Clase ii patrones de diseño
Clase ii patrones de diseñoClase ii patrones de diseño
Clase ii patrones de diseño
 
Programacion orientada a objetos
Programacion orientada a objetosProgramacion orientada a objetos
Programacion orientada a objetos
 

More from Israel Rey

Análisis de Procesos
Análisis de ProcesosAnálisis de Procesos
Análisis de ProcesosIsrael Rey
 
Construir un BSC
Construir un BSCConstruir un BSC
Construir un BSCIsrael Rey
 
Caso CoE y Gobierno BPM
Caso CoE y Gobierno BPMCaso CoE y Gobierno BPM
Caso CoE y Gobierno BPMIsrael Rey
 
Mejora Continua en Multifabrik
Mejora Continua en MultifabrikMejora Continua en Multifabrik
Mejora Continua en MultifabrikIsrael Rey
 
Integración: Proceso siniestro de una aseguradora
Integración: Proceso siniestro de una aseguradoraIntegración: Proceso siniestro de una aseguradora
Integración: Proceso siniestro de una aseguradoraIsrael Rey
 
Aplicación de BPM para iniciativas Blockchain
Aplicación de BPM para iniciativas BlockchainAplicación de BPM para iniciativas Blockchain
Aplicación de BPM para iniciativas BlockchainIsrael Rey
 
Análisis BPMS
Análisis BPMSAnálisis BPMS
Análisis BPMSIsrael Rey
 
Decálogo de Beneficios Implantación BPM
Decálogo de Beneficios Implantación BPMDecálogo de Beneficios Implantación BPM
Decálogo de Beneficios Implantación BPMIsrael Rey
 
Mapas cognitivos y Mapas causales para comprender el proceso de negocio
Mapas cognitivos y Mapas causales para comprender el proceso de negocioMapas cognitivos y Mapas causales para comprender el proceso de negocio
Mapas cognitivos y Mapas causales para comprender el proceso de negocioIsrael Rey
 
Automatización e implementación de Procesos en un Motor BPM
Automatización e implementación de Procesos en un Motor BPMAutomatización e implementación de Procesos en un Motor BPM
Automatización e implementación de Procesos en un Motor BPMIsrael Rey
 
Análisis de Procesos con Adonis
Análisis de Procesos con AdonisAnálisis de Procesos con Adonis
Análisis de Procesos con AdonisIsrael Rey
 
Modelización y Análisis de Procesos bajo BPMN
Modelización y Análisis de Procesos bajo BPMNModelización y Análisis de Procesos bajo BPMN
Modelización y Análisis de Procesos bajo BPMNIsrael Rey
 
Software testing
Software testingSoftware testing
Software testingIsrael Rey
 
Instalación de Jmeter
Instalación de JmeterInstalación de Jmeter
Instalación de JmeterIsrael Rey
 
Qa Testing - Cucumber
Qa Testing - CucumberQa Testing - Cucumber
Qa Testing - CucumberIsrael Rey
 
Crear archivo war desde Jenkins
Crear archivo war desde JenkinsCrear archivo war desde Jenkins
Crear archivo war desde JenkinsIsrael Rey
 
Crear war en jenkins
Crear war en jenkinsCrear war en jenkins
Crear war en jenkinsIsrael Rey
 
Innovación educativa enfocada a la acción tutorial
Innovación educativa enfocada a la acción tutorialInnovación educativa enfocada a la acción tutorial
Innovación educativa enfocada a la acción tutorialIsrael Rey
 
Requerimientos de usuario y del sistema
Requerimientos de usuario y del sistemaRequerimientos de usuario y del sistema
Requerimientos de usuario y del sistemaIsrael Rey
 

More from Israel Rey (20)

Análisis de Procesos
Análisis de ProcesosAnálisis de Procesos
Análisis de Procesos
 
Construir un BSC
Construir un BSCConstruir un BSC
Construir un BSC
 
Caso CoE y Gobierno BPM
Caso CoE y Gobierno BPMCaso CoE y Gobierno BPM
Caso CoE y Gobierno BPM
 
Mejora Continua en Multifabrik
Mejora Continua en MultifabrikMejora Continua en Multifabrik
Mejora Continua en Multifabrik
 
Integración: Proceso siniestro de una aseguradora
Integración: Proceso siniestro de una aseguradoraIntegración: Proceso siniestro de una aseguradora
Integración: Proceso siniestro de una aseguradora
 
Aplicación de BPM para iniciativas Blockchain
Aplicación de BPM para iniciativas BlockchainAplicación de BPM para iniciativas Blockchain
Aplicación de BPM para iniciativas Blockchain
 
Análisis BPMS
Análisis BPMSAnálisis BPMS
Análisis BPMS
 
Decálogo de Beneficios Implantación BPM
Decálogo de Beneficios Implantación BPMDecálogo de Beneficios Implantación BPM
Decálogo de Beneficios Implantación BPM
 
Modelado DMN
Modelado DMNModelado DMN
Modelado DMN
 
Mapas cognitivos y Mapas causales para comprender el proceso de negocio
Mapas cognitivos y Mapas causales para comprender el proceso de negocioMapas cognitivos y Mapas causales para comprender el proceso de negocio
Mapas cognitivos y Mapas causales para comprender el proceso de negocio
 
Automatización e implementación de Procesos en un Motor BPM
Automatización e implementación de Procesos en un Motor BPMAutomatización e implementación de Procesos en un Motor BPM
Automatización e implementación de Procesos en un Motor BPM
 
Análisis de Procesos con Adonis
Análisis de Procesos con AdonisAnálisis de Procesos con Adonis
Análisis de Procesos con Adonis
 
Modelización y Análisis de Procesos bajo BPMN
Modelización y Análisis de Procesos bajo BPMNModelización y Análisis de Procesos bajo BPMN
Modelización y Análisis de Procesos bajo BPMN
 
Software testing
Software testingSoftware testing
Software testing
 
Instalación de Jmeter
Instalación de JmeterInstalación de Jmeter
Instalación de Jmeter
 
Qa Testing - Cucumber
Qa Testing - CucumberQa Testing - Cucumber
Qa Testing - Cucumber
 
Crear archivo war desde Jenkins
Crear archivo war desde JenkinsCrear archivo war desde Jenkins
Crear archivo war desde Jenkins
 
Crear war en jenkins
Crear war en jenkinsCrear war en jenkins
Crear war en jenkins
 
Innovación educativa enfocada a la acción tutorial
Innovación educativa enfocada a la acción tutorialInnovación educativa enfocada a la acción tutorial
Innovación educativa enfocada a la acción tutorial
 
Requerimientos de usuario y del sistema
Requerimientos de usuario y del sistemaRequerimientos de usuario y del sistema
Requerimientos de usuario y del sistema
 

Patrones de diseño

  • 1. Patrón de Diseño Un patróndescribe unproblemaqueocurre unayotravezennuestroentorno,asícomolasolución a ese problema, de tal modo que se pueda aplicar esta solución varias veces, y tiene cuatro elementos esenciales. Nombre del patrón: Describe un problema de diseño junto con sus soluciones y consecuencias. Problema: Explica el problema y cuando se debe aplicar el patrón. Solución:Describe comouna plantilla,lacual se puede aplicar en muchas situaciones diferentes. Consecuencias: Son los resultados, así como las ventajas e inconvenientes de aplicar el patrón. Los patrones de diseño no se ocupan de diseños que pueden codificarse en clases y reutilizarse como tales, sinoque sondescripcionesde clasesyobjetosrelacionadosque están particularizados para resolver un problema de diseño general en un determinado contexto. Un patrón de diseño nomina, abstrae e identifica los aspectos clave de una estructura de diseño común y cada patrón de diseño se centra en un problema concreto. Patrones de diseño en el MVC Modelo, Vista, Controlador se usa para construir interfaces de usuario y consiste en tres tipos de objetos. Modelo: es el objeto de aplicación. Vista: es la representación en pantalla. Controlador: define el modo en que la interfaz reacciona a la entrada del usuario. MVC desacoplalasvistasde losmodelosyunavistadebe asegurarse de que suaparienciareflejael estadodel modelo.Cadavezque cambianlosdatosdel modelo,este seencargade avisaralasvistas que dependen de él. Cada vista tiene la oportunidad de actualizarse a sí misma, y este enfoque permite asignar varias vistas a un modelo para ofrecer diferentes presentaciones. El modelo se comunica con sus vistas cuando cambian sus valores, y las vistas se comunican con el modelo para acceder a estos. MVC permite vistas anidadas gracias a la clase VistaCompuesta, una subclase de vista. También permite cambiar el modo en que una vista responde a la entrada de usuario sin cambiar su representación visual; además encapsula el mecanismo de respuesta en un objeto controlador. Una vista usa una instancia de una subclase de controlador para implementar una determinada estrategia de respuesta. Incluso es posible cambiar el controlador de una vista en tiempo de ejecución, para hacer que la vista cambie el modo en que responde a la entrada de usuario. Descripción de los patrones de diseño Cada patrón se divide en secciones para que sean más fáciles de aprender, comparar y usar.
  • 2. Nombre del patrón y clasificación: nombre que pasara a nuestro vocabulario de diseño. Propósito: Que hace este patrón de diseño y en que se basa. También conocido como: Otros nombres por los que se conoce el patrón. Motivación: Como las estructuras de clases y objetos del patrón resuelven el problema. Aplicabilidad: Situaciones en las que se puede aplicar el patrón de diseño. Estructura: Representación gráfica de las clases del patrón. Participantes: Las clases y objetos participantes en el patrón de diseño. Colaboraciones: como colaboran los participantes para llevar a cabo sus responsabilidades. Consecuencias: Resultados de usar el patrón. Implementación: Acciones que se deben tener en cuenta a la hora de aplicar el patrón. Código de ejemplo: Código que muestra cómo se puede implementar el patrón. Usos conocidos: Ejemplos del patrón en sistemas reales. Patrones relacionados: Patrones que están relacionados. Catálogo de patrones de diseño. Patrones de diseño con sus propósitos. Abstract Factory: Proporciona una interfaz para crear familias de objetos relacionados. Adapter: Permite que cooperen clases, ya que no podrían hacerlo con interfaces incompatibles. Bridge: Desacopla una abstracción de su implementación. Builder: Separa la construcción de un objeto complejo de su representación. Chainof responsibility:Creaunacadenaconlosobjetosreceptoresypasalapeticiónporlamisma. Command: Encapsula una petición en un objeto, permitiendo llevar un registro. Composite: Combina objetos en estructuras de árbol para representar jerarquías. Decorator: Añade dinámicamente nuevas responsabilidades a un objeto. Facade: Proporciona una interfaz unificada para un conjunto de interfaces de un subsistema. Factory Method: Permite que una clase delegue en sus subclases la creación de objetos. Flyweight: Usa el comportamiento para permitir un gran número de objetos de grano fino. Interpreter: Define una representación de su gramática. Iterator: Proporciona un modo de acceder secuencialmente a los elementos de un objeto. Mediator: Define un objeto que encapsula cómo interactúan un conjunto de objetos. Memento: Guarda el estado interno de un objeto, para poder anular operaciones. Observer: Define una dependencia de uno a muchos entre objetos. Prototype: Especifica los tipos de objetos a crear por medio de una instancia prototípica. Proxy: Proporciona un sustituto o representante de otro objeto para controlar el acceso a este. Singleton: Garantiza que una clase solo tenga una instancia y acceso global a ella. State: Un objeto puede modificar su comportamiento cada vez que cambie su estado interno. Strategy: Define unafamiliade algoritmos,encapsulacadaunode ellosyloshace intercambiables. Template Method: Permite que las subclases redefinan ciertos pasos del algoritmo. Visitor: Permite definirunanuevaoperaciónsincambiar las clasesde loselementossobre losque opera.
  • 3. Organización del Catalogo Clasificación de los patrones de diseño, los patrones pueden tener un propósito de creación, estructural o de comportamiento. Creación: Tienen que ver con el proceso de creación de objetos. Estructurales: Tratan con la composición de clases u objetos. Comportamiento: Caracterizan el modo en que las clases y objetos interactúan. Como resuelven los patrones los problemas de diseño Los patrones los solucionan de diferentes formas. Encontrar los objetos apropiados Los programas orientados a objetos están formados de objetos, un objeto encapsula tanto datos como los procedimientos que operan sobre esos datos, estos procedimientos se conoce como métodos u operaciones. Un objeto realiza una operación cuando recibe una petición. Especificar las interfaces de los objetos Al conjunto de todas las signaturas definidas por las operaciones de un objeto se le denomina la interfaz del objeto. Un tipo es un nombre que se usa para denotar una determinada interfaz, un objeto puede tener muchos tipos. Parte de la interfaz de un objeto puede ser caracterizada por un tipo. Las interfacespuedencontenercomosubconjuntos,otrasinterfaces,losobjetossolose conocena través de su interfaz. Dos objetos con implementaciones diferentes pueden tener interfaces idénticas. La asociaciónentiempode ejecuciónentre unapeticiónaunobjetoyuna de sus operacioneseslo que se conoce como enlace dinámico,yeste nos permite sustituirobjetosentiempode ejecución por otros que tengan la misma interfaz. Especificar las implementaciones de los objetos La implementación de un objeto queda definida por su clase; la clase especifica los datos, la representación interna del objeto y define las operaciones que puede realizar. Los objetosse creaninstanciandounaclase,el objetoesunainstanciade laclase yse puedencrear muchas instancias parecidas de un objeto instanciando una clase. Cuando una subclase hereda de una clase padre,incluye lasdefinicionesde todoslosdatosyoperacionesquedefine laclase padre. Una clase abstractaesaquellaque defineunainterfazcomúnparasussubclases,estadelegaraparte o toda su implementación en las operaciones definidas en sus subclases.
  • 4. Las operaciones que una clase abstracta define pero no implementa se denominan operaciones abstractas y las clases que no son abstractas se denominan clases concretas. Herencia de clases frente a herencia de interfaces La clase de un objetodefinecomose implementaunobjeto,el estadointernoylaimplementación de sus operaciones. Un objetopuede tenermuchostipos,yobjetosde clasesdiferentespuedentenerel mismotipo,el tipo de un objeto solo se refiere a su interfaz. La herenciade clasesdefine laimplementaciónde unobjetoentérminosde la implementaciónde otroobjeto,encambiolaherenciade interfacesdescribecuandosepuede usarunobjetoenel lugar de otro. Programar para interfaces, no para una implementación La herenciade clasesnoesmásque unmecanismoparaextenderlafuncionalidadde unaaplicación reutilizando la funcionalidad de las clases padres, permite definir un nuevo tipo de objetos basándose en otro y también para definir familias de objetos con interfaces idénticas. Cuando la herencia se usa correctamente, todas las clases que derivan de una clase abstracta compartirán su interfaz. Al manipularlosobjetossolamente entérminosde lainterfazdefinidaporlasclasesabstractas,los clientes no tienen que conocer los tipos específicos de los objetos que usan. Poner a funcionar los mecanismos de reutilización Herencia frente a composición Las dos técnicasmás comunesparareutilizarfuncionalidadensistemasorientadosaobjetossonla herencia de clases y la composición de objetos. La herencia de clases permite definir una implementaciónen términos de otra, a esta forma de reutilización mediante herencia se la denomina reutilización de caja blanca, que se refiere a visibilidad porque las clases padres suelen hacerse visibles a las subclases. La composiciónde objetosesunaalternativaa la herenciade clases,estarequiere que losobjetos a componertenganinterfacesbiendefinidas,estetipode reutilizaciónse denominareutilizaciónde caja negra, porque los detalles internos de los objetos no son visibles. La composiciónde objetosse definedinámicamente entiempode ejecuciónatravésde objetosque tienenreferenciasaotrosobjetos,ademásrequiere que los objetostenganencuentalasinterfaces de los otros.
  • 5. Reutilizar mediante la herencia hace más fácil construir nuevos componentes que puedan ser combinados con los antiguos. La herencia y la composición trabajan por lo tanto juntas. Delegación La delegaciónesunmodo de lograr que la composiciónseatan potente parala reutilizacióncomo lo es la herencia. La principal ventajade ladelegaciónesque haceque seafácilcombinarcomportamientosentiempo de ejecución y cambiar la manera en que estos se combinan. La delegación es una buena elección de diseñosolocuandosimplificamásdeloquecomplicayfuncionamejorcuandoseusaenpatrones estándar. La delegación es un ejemplo extremo de composición de objetos. Herencia frente a tipos parametrizados Tipos parametrizados, es una técnica para reutilizar funcionalidad, también conocidos como genéricos, esta técnica nos permite definir un tipo sin especificar todos los otros tipos que usa. Los tipos sin especificar se proporcionan como parámetros cuando se va a usar el tipo parametrizado.Lostiposparametrizadospermitencambiarlostipos que puede utilizar una clase. Estructuras que relacionan tiempo de ejecución y tiempo de compilación La estructura en tiempo de ejecución de un programa orientado a objetos suele guardar poco parecidoconla estructurade su código.La estructuradel códigose fijaentiempode compilacióny consiste en clases con relaciones de herencia estáticas. Distinción entre agregación y asociación.- Agregación: - Implica que un objeto posee a otro o que es responsable de él. - Implica que el objeto agregado y su propietario tienen la misma vida. - Las relaciones tienden a ser menos y más permanentes que las de asociación. Asociación: - Implicaque unobjetosimplemente conoce a otro, denominada también relación de uso. - Las relacionesse hacenydeshacenmuchomásfrecuentemente yalgunasvecessoloexisten mientras dura una operación.
  • 6. Diseñar para el cambio Para maximizar la reutilización reside en anticipar nuevos requisitos y cambios en los requisitos existentes.Undiseñoquenotengaencuentael cambiosufre el riesgode tenerque serrediseñado por completo en el futuro. El rediseño afecta a muchas partes del sistema software, por lo que los cambios no previstos siempre resultan costosos. Programas de aplicación En la construcción de un programa de aplicación, como un editor de documentos o una hoja de cálculo, la reutilización interna, la facilidad de mantenimiento y la extensión son las principales prioridades. Lospatronesde diseñotambiénhacenqueunaaplicaciónseamásfácil de mantenercuandose usan para limitar las dependencias de plataforma y para organizar un sistema en capas. Toolkits Un toolkit es un conjunto de clases relacionadas y reutilizables, una aplicación incorpora clases de una o más bibliotecas de clases predefinidas llamadas toolkit. Proporcionan funcionalidad que puede ayudar a que la aplicación haga su trabajo y se centra en la reutilización de código. Frameworks Un framework es un conjunto de clases cooperantes que constituyen un diseño reutilizable para una clase específica de software. El framework determina la arquitectura de nuestra aplicación. Los patrones y los frameworks son diferentes en que, los patrones de diseño tienen que ser implementados cada vez que se emplean y los frameworks son el modo en que los sistemas orientados a objetos consiguen la mayor reutilización.