Contenido del curso
Concurrencia
- 2

Condiciones de Carrera en Programación Concurrente con Go
04:51 min - 3

Evitar Condiciones de Carrera en Go con Mutex y WaitGroup
11:26 min - 4

Lectura y Escritura Concurrente en Go con RWMutex
06:15 min - 5

Creación de un Sistema de Caché Concurrente en Go
14:29 min - 6

Manejo de Condiciones de Carrera en Go: Implementación de Mutex
08:52 min - 7

Cache concurrente en Go para cálculos intensivos de Fibonacci
16:31 min
Patrones de diseño
- 8

Patrones de Diseño en Programación Orientada a Objetos con Go
Viendo ahora - 9

Patrón de Diseño Factory en Go: Creación y Uso Práctico
15:17 min - 10

Implementación de Singleton en Go para Conexiones de Base de Datos
08:48 min - 11

Patrón de Diseño Adapter en Go: Implementación Práctica
09:50 min - 12

Patrón de Diseño Observer en Go: Implementación Práctica
11:59 min - 13

Implementación del Patrón de Diseño Strategy en Go
08:53 min
Net
- 14

Escaneo de Puertos TCP con Go: Introducción Básica
07:45 min - 15

Concurrencia en Go: Escáner de Puertos Eficiente y Personalizable
09:16 min - 16

Implementación de NetCAD como Cliente TCP en Go
10:14 min - 17

Construcción de Back End para Servidor de Chat en Go
16:08 min - 18

Implementación de un Servidor de Chat en Go con TCP
13:54 min
Conclusión
Patrones de Diseño en Programación Orientada a Objetos con Go
Resumen
Dominar los patrones de diseño es uno de los pasos más decisivos para escalar como ingeniero de software. Se trata de planos probados que resuelven problemas recurrentes en el diseño de sistemas, sin necesidad de reinventar soluciones desde cero. En lugar de fragmentos de código que se copian y pegan, son conceptos generales que se adaptan a cada lenguaje y a cada situación particular [0:25].
¿Qué es un patrón de diseño y de dónde proviene?
Un patrón de diseño funciona como un plano arquitectónico: describe una forma estructurada de abordar un problema que otros desarrolladores ya han enfrentado antes. La idea central es que puedas tomar ese plano, entenderlo y modificarlo para que encaje con las necesidades específicas de tu proyecto [1:05].
El origen del término es fascinante. Fue Christopher Alexander quien acuñó el concepto en un libro sobre construcción y ambientes urbanos [1:30]. De ahí que muchos patrones lleven nombres relacionados con la construcción: factory (fábrica), bridge (puente), facade (fachada). Posteriormente, cuatro autores conocidos como el Gang of Four trasladaron esta filosofía al mundo del software, en particular a la programación orientada a objetos [1:50]. En la primera versión de su libro definieron veintitrés patrones de diseño, agrupados en tres grandes categorías.
¿Cuáles son las tres categorías de patrones de diseño?
Cada categoría aborda un tipo distinto de problema. Comprender esta clasificación permite identificar rápidamente qué patrón aplicar en cada escenario.
¿Qué resuelven los patrones creacionales?
Los patrones creacionales establecen mecanismos para crear objetos de forma flexible y reutilizable [2:25]. Un código altamente reutilizable refleja mejores prácticas de ingeniería de software. Dentro de esta familia se estudian dos patrones clave:
- Factory: facilita la creación de objetos sin exponer la lógica de instanciación.
- Singleton: garantiza que una clase tenga una única instancia accesible globalmente.
¿Cómo funcionan los patrones estructurales?
Los patrones estructurales definen cómo componer clases y objetos para formar estructuras más grandes, aplicando principios como la composición sobre herencia mientras se mantiene la flexibilidad y la reusabilidad [2:50]. El patrón que se aborda en esta familia es:
- Adapter: permite que interfaces incompatibles trabajen juntas, actuando como un traductor entre dos sistemas.
¿Para qué sirven los patrones de comportamiento?
Los patrones de comportamiento establecen la comunicación efectiva entre objetos de diferentes clases que persiguen un mismo objetivo [3:15]. Los dos patrones que se estudian son:
- Observer: notifica automáticamente a múltiples objetos cuando ocurre un cambio de estado.
- Strategy: permite intercambiar algoritmos en tiempo de ejecución sin alterar el código cliente.
¿Por qué implementar patrones de diseño con Go?
Cada lenguaje de programación implementa los patrones aprovechando sus propias fortalezas y compensando sus limitaciones [3:40]. En total se trabajan cinco patrones de diseño — factory, singleton, adapter, observer y strategy — todos implementados en Go, lo que permite ver cómo un lenguaje con un sistema de tipos particular y sin herencia clásica resuelve estos mismos problemas de forma idiomática.
Aplicar estos patrones de manera consistente mejora la madurez del código, reduce la complejidad y facilita el trabajo en equipo. Si ya conocías algunos de estos nombres o los has visto en otros lenguajes, compartir tu experiencia implementándolos en Go puede ser muy enriquecedor para la comunidad.