Saltar al contenido
Logotipo de Trainontech Trainontech

Lenguajes y Fundamentos de Programación · LNG-302

Patrones de diseño aplicados

Patrones que resuelven problemas reales y patrones que solo añaden capas, en Python, Java y TypeScript.

Bajo demanda Avanzado 7 módulos · 36 clases

Formato asíncrono Desarrollo Python, Java, TypeScript

Lo que aprenderás

  • Reconocer el problema de diseño que da origen a cada patrón antes de nombrar el patrón.
  • Implementar estrategia, observador, decorador y fábrica en Python, Java y TypeScript comparando el resultado.
  • Sustituir patrones estructurales por funciones de primer orden cuando el lenguaje ya los ofrece.
  • Detectar sobreingeniería en una jerarquía de clases y proponer la simplificación equivalente.
  • Aplicar inyección de dependencias para aislar efectos externos y facilitar las pruebas.
  • Refactorizar código existente hacia un patrón en pasos pequeños y verificables con tests.

Contenido del curso

7 módulos · 36 clases en vídeo · práctica guiada en cada módulo

Módulo 1 · Antes del catálogo 5 clases
  • Qué problema resuelve realmente un patrón
  • Acoplamiento, cohesión y coste del cambio
  • Los principios SOLID revisados con escepticismo
  • Los tres lenguajes del curso y sus diferencias de partida
  • Cómo se medirá si un patrón mejora el código
Módulo 2 · Patrones de creación 5 clases
  • Fábrica simple y método fábrica sobre un caso concreto
  • Fábrica abstracta: cuándo compensa y cuándo no
  • Constructor por pasos para objetos con muchos parámetros
  • Singleton: por qué suele ser un problema disfrazado
  • Prototipo y copia profunda frente a copia superficial
Módulo 3 · Patrones estructurales 5 clases
  • Adaptador para integrar una biblioteca ajena
  • Decorador en Java y con funciones en Python
  • Fachada para reducir la superficie de un subsistema
  • Compuesto para estructuras en árbol
  • Proxy: caché, control de acceso y carga diferida
Módulo 4 · Patrones de comportamiento 6 clases
  • Estrategia frente a cadenas de condicionales
  • Observador y su relación con los eventos del navegador
  • Plantilla de método y sus alternativas por composición
  • Estado: modelar una máquina de estados sin condicionales
  • Comando, deshacer y rehacer
  • Iterador y generadores del lenguaje
Módulo 5 · Patrones que el lenguaje ya te da 5 clases
  • Funciones de primer orden en lugar de estrategia
  • Decoradores nativos de Python frente al patrón clásico
  • Tipos estructurales de TypeScript y adaptadores innecesarios
  • Registros e inmutabilidad en Java moderno
  • Señales de sobreingeniería en una revisión de código
Módulo 6 · Dependencias y pruebas 5 clases
  • Inyección de dependencias sin marco de trabajo
  • Dobles de prueba: falsos, espías y simulaciones
  • Aislar entrada y salida en los bordes del sistema
  • Diseñar para poder probar sin reescribirlo todo
  • Contratos entre módulos y pruebas de integración
Módulo 7 · Proyecto de cierre 5 clases
  • Código de partida: un módulo difícil de cambiar
  • Diagnóstico y plan de refactorización por pasos
  • Aplicar dos patrones y descartar un tercero
  • Comparar la versión Python y la versión TypeScript
  • Documentar las decisiones para el resto del equipo

Requisitos

  • Experiencia real programando con orientación a objetos en algún lenguaje.
  • Lectura cómoda de código en Python y en al menos uno entre Java y TypeScript.
  • Haber escrito pruebas automatizadas alguna vez, aunque sea de forma básica.

Descripción

Los patrones de diseño se enseñan a menudo como un catálogo que hay que memorizar, y el efecto es contrario al buscado: código lleno de fábricas abstractas y capas de indirección que nadie sabe justificar. El problema no son los patrones, sino aplicarlos sin haber identificado la tensión de diseño concreta que pretenden aliviar en ese punto del sistema.

Aquí cada patrón entra por el problema: primero un fragmento de código que duele al cambiarlo, después la refactorización que lo resuelve y por último el nombre. La misma solución se muestra en Python, Java y TypeScript, lo que hace evidente qué parte del patrón es diseño y qué parte es simple compensación de lo que falta en un lenguaje concreto.

Al final se dispone de criterio para decidir cuándo un patrón paga su coste y cuándo una función basta, y de práctica en refactorización guiada por pruebas. Es la preparación adecuada para asumir revisiones de código, definir convenciones de un equipo y afrontar cursos posteriores de arquitectura de aplicaciones y sistemas de diseño compartidos.

¿Para quién es este curso?

  • Desarrolladores con varios años de oficio que revisan el código de otras personas.
  • Perfiles técnicos que trabajan en más de un lenguaje y quieren un criterio común de diseño.
  • Quienes heredan una base de código con jerarquías profundas y necesitan simplificarla sin romperla.
Bajo demanda

Curso diseñado con la ficha cerrada. Se produce al confirmarse un grupo o un contrato.

Código
LNG-302
Nivel
Avanzado
Público
Desarrollo
Entorno
Python, Java, TypeScript

Este curso incluye

  • 36 clases en vídeo bajo demanda
  • Práctica en entornos web y simuladores, sin instalar nada
  • Tutorización en el campus
  • Acceso desde móvil, tableta y ordenador
  • Actualizaciones cuando cambia la versión de la herramienta
  • Certificado de finalización

Sigue aprendiendo

Cursos relacionados

PY-106Lenguajes y Fundamentos de Programación

Concurrencia: multihilo y multiproceso

Paralelizar adquisición de datos y tareas de E/S sin introducir errores difíciles de reproducir.

Python

Avanzado 33 clases

PY-107Lenguajes y Fundamentos de Programación

Testing y TDD en Python

Pruebas unitarias, fixtures y desarrollo dirigido por pruebas en proyectos técnicos reales.

Python

Avanzado 34 clases

PY-131Lenguajes y Fundamentos de Programación

Webscraping con agentes de IA en local

Agentes que navegan y extraen datos sin depender de servicios en la nube.

PythonOllama

Avanzado 34 clases