Patrones de Diseño Java
Patrones de Diseño Java
Patrones de Diseño Java
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
www.sgcampus.com.mx @sgcampus
Historia de los patrones de diseño
www.sgcampus.com.mx @sgcampus
Introducción
• Influencia relativa en la
arquitectura
www.sgcampus.com.mx @sgcampus
Introducción
Pattern Languaje
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
www.sgcampus.com.mx @sgcampus
Introducción
www.sgcampus.com.mx @sgcampus
Importancia de los patrones de diseño
www.sgcampus.com.mx @sgcampus
Importancia de los PDD
www.sgcampus.com.mx @sgcampus
Que buscamos con los PDD
www.sgcampus.com.mx @sgcampus
Que NO buscamos con los
PDD
www.sgcampus.com.mx @sgcampus
Que NO buscamos con los
PDD
www.sgcampus.com.mx @sgcampus
Como ayudan los patrones al
crecimiento profesional
www.sgcampus.com.mx @sgcampus
PDD y la evolución
profesional
www.sgcampus.com.mx @sgcampus
Evolucionando a la
arquitectura
Cuando
El programador ve funciones/métodos El arquitecto ve Interfaces
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
Patrones
www.sgcampus.com.mx @sgcampus
Tipos de patrones de diseño
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…..
www.sgcampus.com.mx @sgcampus
Principales patrones de
diseño
www.sgcampus.com.mx @sgcampus
Implementación
www.sgcampus.com.mx @sgcampus
Requerimientos
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