Skip to content

Instantly share code, notes, and snippets.

@Sh0cko
Last active September 12, 2025 00:33
Show Gist options
  • Select an option

  • Save Sh0cko/2b444000cf10d3b840d25f65e3bd5a90 to your computer and use it in GitHub Desktop.

Select an option

Save Sh0cko/2b444000cf10d3b840d25f65e3bd5a90 to your computer and use it in GitHub Desktop.

Joel Cuevas Estrada - 22210298

Resumen ejecutivo del libro Sumérgete en los patrones de diseño - Alexander Shvets

Sumérgete en los patrones de diseño es una guía práctica sobre patrones de diseño de software, orientada a mejorar la calidad, la flexibilidad y la mantenibilidad del código. El libro presenta 22 patrones clásicos divididos en tres categorías principales: creacionales, estructurales y de comportamiento. Cada capítulo aborda un problema real de diseño y propone una solución mediante un patrón específico, acompañada de ejemplos de código y explicaciones paso a paso.


Introducción a los patrones de diseño

Los patrones de diseño son soluciones comprobadas a problemas comunes en el desarrollo de software. No son fragmentos de código listos para usar, sino guías que ayudan a estructurar sistemas de manera flexible. Crear objetos directamente mediante new puede generar un código rígido y difícil de modificar. Los patrones creacionales separan la creación de objetos de su uso, permitiendo cambios en la implementación sin afectar el resto del sistema.


Patrones Creacionales

Singleton

Propósito: Garantizar que una clase tenga una única instancia y proporcionar un punto de acceso global.
Beneficio: Útil para gestores de configuración, conexiones a bases de datos o recursos compartidos.

Factory Method

Propósito: Delegar la creación de objetos a subclases mediante una interfaz común.
Beneficio: Permite extender el sistema sin modificar el código existente.

Abstract Factory

Propósito: Crear familias de objetos relacionados sin especificar sus clases concretas.
Beneficio: Mantiene consistencia entre componentes relacionados.

Builder

Propósito: Construir objetos complejos paso a paso.
Beneficio: Permite crear diferentes representaciones de un mismo tipo de objeto.

Prototype

Propósito: Crear nuevos objetos copiando un objeto existente.
Beneficio: Ideal cuando la creación de un objeto es costosa o se requieren múltiples copias similares.


Patrones de Comportamiento

Chain of Responsibility

Propósito: Pasar una solicitud a lo largo de una cadena de objetos hasta que uno la procese.
Beneficio: Evita acoplar el emisor de la solicitud con su receptor.

Command

Propósito: Convertir solicitudes en objetos autónomos que contienen toda la información necesaria para ejecutarlas.
Beneficio: Facilita colas de operaciones, deshacer/rehacer y parametrización de objetos.

Iterator

Propósito: Acceder secuencialmente a los elementos de una colección sin exponer su estructura interna.
Beneficio: Permite recorrer diferentes colecciones de manera uniforme.

Mediator

Propósito: Centralizar la comunicación entre objetos.
Beneficio: Reduce el acoplamiento y facilita el mantenimiento del sistema.

Memento

Propósito: Capturar y restaurar el estado interno de un objeto sin violar su encapsulamiento.
Beneficio: Útil para implementar funcionalidades de deshacer/rehacer.

Observer

Propósito: Establecer una dependencia uno a muchos para notificar cambios de estado.
Beneficio: Ideal para sistemas de eventos y suscriptores.

State

Propósito: Permitir que un objeto cambie su comportamiento cuando su estado interno cambia.
Beneficio: Facilita la implementación de máquinas de estado y comportamientos dependientes del contexto.

Strategy

Propósito: Definir algoritmos intercambiables y encapsularlos.
Beneficio: Permite variar algoritmos sin afectar a los clientes que los usan.

Template Method

Propósito: Definir el esqueleto de un algoritmo, dejando algunos pasos personalizables.
Beneficio: Facilita la reutilización de código y la extensión de comportamientos.

Visitor

Propósito: Definir nuevas operaciones sobre elementos de una estructura sin modificar sus clases.
Beneficio: Permite añadir funcionalidades sin alterar las clases existentes.


Conclusión

Sumérgete en los patrones de diseño es un recurso ideal para principiantes y desarrolladores experimentados. Enseña cómo aplicar patrones de diseño en proyectos reales, mejorando la calidad del software y facilitando su mantenimiento y evolución. Gracias a su enfoque práctico y ejemplos claros, el aprendizaje de los patrones es accesible y directamente aplicable en entornos de desarrollo profesionales.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment