Patrones de Diseño Java

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 39

www.sgcampus.com.

mx Instructor: Oscar Blancarte

Titulo
Introducción a los patrones de diseño

@sgcampus
www.sgcampus.com.mx @sgcampus
Presentación

www.sgcampus.com.mx @sgcampus
http://oscarblancarteblog.com http://centripio.io

www.sgcampus.com.mx @sgcampus
Que es un patrón de diseño

Un patrón de diseño es, la solución a un problema de


diseño, el cual debe haber comprobado su efectividad
resolviendo problemas similares en el pasado, también
tiene que ser reutilizable, por lo que se deben poder usar
para resolver problemas parecidos en contextos diferentes.

www.sgcampus.com.mx @sgcampus
Historia de los patrones de diseño

www.sgcampus.com.mx @sgcampus
Introducción

A Pattern Language (1979)


Christopher Alexander

• Captura de problemas esenciales


y plantea soluciones

• Crea un lenguaje para expresar


ideas arquitectónicas

• Influencia relativa en la
arquitectura

www.sgcampus.com.mx @sgcampus
Introducción

Pattern Languaje

• Vocabulario (Nombre del patrón que amplía el vocabulario)

• Gramática (Descripción del problema en términos simples)

• Sintaxis (Describe el problema utilizando el vocabulario previamente


definido)

www.sgcampus.com.mx @sgcampus
Introducción

Mini-buses
Sintaxis
Este patrón ayuda a completar el ÁREA DE TRANSPORTE LOCAL y la WEB
DE TRANSPORTE PÚBLICO. Las zonas de transporte local dependen en
gran medida del tráfico peatonal, y de bicicletas, carritos y caballos. La red de
transporte público se basa en trenes, aviones y autobuses. Ambos patrones
necesitan un tipo de transporte público más flexible para apoyarlos.

Gramática:
El transporte público debe ser capaz de
llevar a la gente desde cualquier punto
a cualquier otro punto dentro del área
metropolitana.

www.sgcampus.com.mx @sgcampus
Introducción

Kent Beck & Ward Cunningham (1987)

Mostraron la aplicabilidad que


tenían las ideas de
Alexander con el Software

www.sgcampus.com.mx @sgcampus
Introducción

1994, sale a luz el libro que


cambiaría para siempre el
concepto de Patrones de
diseño.

Patrones GoF (23)


• Erich Gamma
• Richard Helm
• Ralph Johnson
• John Vlissides

www.sgcampus.com.mx @sgcampus
Importancia de los patrones de diseño

www.sgcampus.com.mx @sgcampus
Importancia de los PDD

• Demuestra la madurez de un programador de


software

• Evita reinventar la rueda

• Agiliza el desarrollo de software

• Se basa en las mejores prácticas de programación

• Permite utilizar un vocabulario común

www.sgcampus.com.mx @sgcampus
Que buscamos con los PDD

• Proporcionar un catálogo de soluciones probadas de


diseño para problemas comunes conocidos.

• Evitar la reiteración en la búsqueda de soluciones a


problemas ya conocidos y solucionados anteriormente.

• Crear un lenguaje estándar entre los desarrolladores.

• Facilitar el aprendizaje a nuevas generaciones de


programadores.

www.sgcampus.com.mx @sgcampus
Que NO buscamos con los
PDD

• Imponer ciertas alternativas de diseño frente a otras.

• Imponer la solución definitiva a un problema de diseño.

• Eliminar la creatividad inherente al proceso de diseño.

www.sgcampus.com.mx @sgcampus
Que NO buscamos con los
PDD

¿Creen que es bueno utilizar siempre patrones de diseño,


aun cuando el problema a resolver no encaja al 100% con
el problema que resuelve el patrón de diseño?

www.sgcampus.com.mx @sgcampus
Como ayudan los patrones al
crecimiento profesional

www.sgcampus.com.mx @sgcampus
PDD y la evolución
profesional

Solution Habla de procesos, componentes e integraciones


Architect

Arquitecto Habla de patrones y componentes

Developer Sr Mescla patrones con código

Developer Jr Habla en código

www.sgcampus.com.mx @sgcampus
Evolucionando a la
arquitectura

Cuando
El programador ve funciones/métodos El arquitecto ve Interfaces

El programador ve Clases El arquitecto ve Componentes

El programador ve Variables El arquitecto ve Configuraciones

www.sgcampus.com.mx @sgcampus
Sueldo de un Arquitecto

www.sgcampus.com.mx @sgcampus
Sueldo de un Arquitecto

www.sgcampus.com.mx @sgcampus
Tipos de patrones de diseño

www.sgcampus.com.mx @sgcampus
Tipos de patrones de diseño

Tiene un contexto mas pequeño, pues


Patrones de se centran en la forma en que los
diseño objetos se crean, estructuran o
interactúan con el resto.

Patrones

Afecta la forma de trabajar del todo el


Patrones componente, impone restricciones,
Arquitectónicos así como la forma con que se
comunica con otros componentes.

www.sgcampus.com.mx @sgcampus
Tipos de patrones de diseño

Controlan la forma en que los


Creacionales
objetos son creados

Define la forma en que las


Patrones de clases deben de
Estructurales
diseño
estructurarse

Define la forma en que los


Comportamiento objetos deben de
comportarse en Runtime
Patrones

Integración

Patrones
Seguridad
Arquitectónicos

Web

www.sgcampus.com.mx @sgcampus
Ejemplo de Patrone de diseño

Patrón de diseño
Component
<subcomponent> <subcomponent>
Singleton Factory Method

<subcomponent>
Composite

www.sgcampus.com.mx @sgcampus
Ejemplo de patrón
arquitectónico

Patrón Arquitectónico
Component (3 layers)
Presentación

Negocio

Datos

www.sgcampus.com.mx @sgcampus
Entonces…..

Entonces, ¿Qué tipo de patrón es MVC?

www.sgcampus.com.mx @sgcampus
Principales patrones de
diseño

Creacionales Estructurales Comportamiento

• *Factory Method • Adapter • *Iterator


• *Abstract Factory • Bridge • *Commando
• *Singleton • *Composite • *Observer
• *Builder • Decorator • Templete Method
• Prototype • Facade • *Strategy
• *Object Pool • Flyweight • Chain of
• *Proxy reponsability
• Iterpreter
• Mediator
• Memento
• State
• Visitor

www.sgcampus.com.mx @sgcampus
Implementación

www.sgcampus.com.mx @sgcampus
Requerimientos

¿Qué es necesario para aprender patrones de


diseño?

1. Encapsulamiento
2. Abstracción
3. Herencia
4. Polimorfismo
5. ¿UML?

www.sgcampus.com.mx @sgcampus
Command Pattern

Intención:
Este patrón permite solicitar una operación a un objeto sin conocer realmente el contenido de esta, ni
el receptor real de la misma. Para ello se encapsula la petición como un objeto, con lo que además
facilita la parametrización de los métodos.

Problema
Necesidad de emitir peticiones a objetos sin saber nada sobre la operación solicitada o el receptor de
la solicitud.

www.sgcampus.com.mx @sgcampus
Command Pattern

Intención:
Este patrón permite solicitar una operación a un objeto sin conocer realmente el contenido de esta, ni
el receptor real de la misma. Para ello se encapsula la petición como un objeto, con lo que además
facilita la parametrización de los métodos.

Problema
Necesidad de emitir peticiones a objetos sin saber nada sobre la operación solicitada o el receptor de
la solicitud.

www.sgcampus.com.mx @sgcampus
Command Pattern

Como funciona:
Command desacopla el objeto que invoca la operación, del que sabe cómo ejecutara. Para lograr
esta separación, se deberá crear una clase base, la cual contenga el método execute, encargado de
iniciar la ejecución de la operación.

Todos los clientes de los objetos Command ven a los objetos como cajas negras, por lo que ellos solo
se limitan a ejecutar el método execute, sin saber realmente que pasa dentro del objeto.

Para lograr el desacople entre los comandos y el cliente, es necesario tener un objeto intermedio, el
cual vincule la petición con el comando concreto, logrando que el cliente nunca sepa que realmente los
detalles del comando ejecutado.

www.sgcampus.com.mx @sgcampus
Diagrama de clases

www.sgcampus.com.mx @sgcampus
Diagrama de clases

www.sgcampus.com.mx @sgcampus
Implementando una terminal

www.sgcampus.com.mx @sgcampus
Implementando una terminal

www.sgcampus.com.mx @sgcampus
Implementando una terminal

Vayamos al código

www.sgcampus.com.mx @sgcampus
¿Preguntas?

www.sgcampus.com.mx @sgcampus
Muchas Gracias

www.sgcampus.com.mx @sgcampus

También podría gustarte