La charla de introducción a los patrones de diseño, es una breve explicación acerca de la importancia de los patrones de diseño en la calidad de un software y como ellos pueden mejorar el perfil técnico de un profesional del software. En la charla se busca explicar que son los patrones de diseño y abordar algunos de los principales patrones de diseño que se utilizan en la programación moderna.
4. 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.
6. 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
7. 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)
8. 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.
12. 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
13. 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.
14. 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.
15. 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?
17. www.sgcampus.com.mx @sgcampus
PDD y la evolución
profesional
Solution
Architect
Arquitecto
Developer Sr
Developer Jr Habla en código
Mescla patrones con código
Habla de patrones y componentes
Habla de procesos, componentes e integraciones
18. www.sgcampus.com.mx @sgcampus
Evolucionando a la
arquitectura
El programador ve Variables
El programador ve funciones/métodos El arquitecto ve Interfaces
El programador ve Clases El arquitecto ve Componentes
El arquitecto ve Configuraciones
Cuando
22. www.sgcampus.com.mx @sgcampus
Tipos de patrones de diseño
Patrones
Patrones de
diseño
Patrones
Arquitectónicos
Afecta la forma de trabajar del todo el
componente, impone restricciones,
así como la forma con que se
comunica con otros componentes.
Tiene un contexto mas pequeño, pues
se centran en la forma en que los
objetos se crean, estructuran o
interactúan con el resto.
23. www.sgcampus.com.mx @sgcampus
Tipos de patrones de diseño
Patrones
Patrones de
diseño
Creacionales
Estructurales
Comportamiento
Patrones
Arquitectónicos
Integración
Seguridad
Web
Controlan la forma en que los
objetos son creados
Define la forma en que las
clases deben de
estructurarse
Define la forma en que los
objetos deben de
comportarse en Runtime
30. 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.
31. 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.
32. 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.