Patrones de diseño: de la arquitectura a la implementación práctica
Descripción
Además, la formación le capacitará para seleccionar el patrón adecuado según el contexto arquitectónico, optimizando la escalabilidad, el desacoplamiento y la mantenibilidad de tus proyectos de desarrollo.
Objetivos
Integrar patrones en arquitecturas reales: Comprender cómo los patrones de diseño se articulan dentro de las distintas técnicas arquitectónicas.
Desarrollar criterios de selección: Evaluar cuándo es necesario aplicar un patrón, como seleccionar entre varias posibilidades y como priorizar la simplicidad, el desacoplamiento y la escalabilidad en las soluciones
Audiencia
• Arquitectos de software que necesiten estandarizar soluciones técnicas.
• Líderes técnicos interesados en mejorar la mantenibilidad y escalabilidad de sus proyectos.
Prerrequisitos
• Conocimiento básico de Principios SOLID.
• Familiaridad con diagramas UML de clases (lectura básica)
Temario
- Arquitectura vs. diseño
- Problemas en el diseño de software
- Tipos de patrones: arquitectónicos, diseño, calidad,...
- El rol de los patrones en la calidad del software
- Principios de diseño
• DRY, KISS, YAGNI...
• Separation of Concerns
- Principios SOLID
- Patrones de diseño
• ¿Qué es un patrón de diseño?
• Patrones Creacionales
• Patrones Estructurales
• Patrones Comportamiento
2. Control básico. Creación y primeros comportamientos
- Creacionales: Singleton, Factory Method.
- Comportamiento: Observer, Strategy.
- Estructurales: Adapter.
3. Organización, reutilización y extensión del sistema
- Estructurales: Facade, Decorator, Proxy.
- Comportamiento: Template Method, Iterator.
4. Patrones de interacción dinámica
- Comportamiento: State, Chain of Responsibility, Command, Mediator.
5. Construcción y diseño estructural avanzado
- Creacionales: Builder, Prototype, Abstract Factory.
- Estructurales: Composite, Bridge.
6. Optimización y patrones avanzados
- Estructurales: Flyweight.
- Comportamiento: Memento, Visitor, Interpreter.
7. Como seleccionar un patrón de diseño
- Diagnóstico inicial
- Clasificación por intención
- Ideas para aplicar un patrón
- Como elegir un patrón dentro de la misma familia
- Sinergias entre patrones. Combinaciones
- Problemas: Overengineering, "code smells", refactoring