Refactoring.Guru mantiene un catálogo de ejemplos de los 23 patrones de diseño clásicos en varios lenguajes de programación. El recurso permite comparar la misma solución conceptual en C#, C++, Go, Java, PHP, Python, Ruby, Rust, Swift y TypeScript.
No funciona como un curso lineal con evaluaciones. Es una referencia para consultar un patrón, revisar su estructura y trasladar la idea a un proyecto propio. Para entender los ejemplos conviene manejar clases, objetos, interfaces y composición.
Las tres familias del catálogo
| Familia | Problema que aborda | Ejemplos |
|---|---|---|
| Creacionales | Cómo se construyen los objetos | Factory Method, Builder, Prototype |
| Estructurales | Cómo se combinan clases y objetos | Adapter, Decorator, Facade |
| De comportamiento | Cómo colaboran y reparten responsabilidades | Observer, Strategy, State |
La clasificación ayuda a comenzar desde el problema. Si una clase depende de una interfaz incompatible, puedes estudiar Adapter; si necesitas intercambiar algoritmos en tiempo de ejecución, Strategy ofrece un punto de comparación más útil.
Qué aporta cada ejemplo de código
Cada implementación muestra los participantes del patrón y su relación dentro de un caso reducido. El valor no está en copiar los nombres de las clases, sino en reconocer:
- qué parte del código cambia con frecuencia;
- qué responsabilidad se separa;
- cómo se comunican los objetos;
- qué complejidad adicional introduce la solución.
Un patrón no es automáticamente mejor que una solución directa. Antes de aplicarlo, comprueba que el problema existe realmente en tu código. Singleton, por ejemplo, puede facilitar un acceso global, pero también aumenta el acoplamiento y dificulta pruebas si se usa sin necesidad.
Recorrido recomendado para una primera consulta
Empieza con un lenguaje que ya conozcas y selecciona tres patrones con propósitos distintos:
- Factory Method para observar creación flexible de objetos.
- Adapter para conectar interfaces incompatibles.
- Strategy para intercambiar comportamientos.
Ejecuta cada ejemplo y dibuja una lista sencilla de clases y responsabilidades. Después cambia un participante o añade una implementación. Solo entonces compara el mismo patrón en otro lenguaje: así verás qué pertenece al patrón y qué depende de la sintaxis.
Cuándo puede servirte
El catálogo es útil para preparar una refactorización, estudiar diseño orientado a objetos o revisar alternativas durante una entrevista técnica. También permite contrastar cómo diferentes lenguajes expresan interfaces, herencia y composición.
No incluye seguimiento, certificado ni una duración oficial. Úsalo como material de consulta a tu ritmo y acompáñalo con un proyecto pequeño. El mejor indicador de comprensión será poder explicar el problema, la solución y el costo del patrón sin depender del ejemplo original.