# data[].attributes.headline
Los patrones de diseño son soluciones probadas y reutilizables para problemas comunes del desarrollo de software.
Permiten organizar mejor el código, hacerlo más mantenible, flexible y fácil de ampliar.

Tipos principales:

Creacionales: Controlan la creación de objetos (Singleton, Factory).

Estructurales: Componen clases y objetos (Adapter, Facade).

De comportamiento: Controlan la comunicación entre objetos (Observer, Strategy).

# data[].attributes.subject
Los patrones de diseño son soluciones probadas y reutilizables para problemas comunes del desarrollo de software.
Permiten organizar mejor el código, hacerlo más mantenible, flexible y fácil de ampliar.

Tipos principales:

Creacionales: Controlan la creación de objetos (Singleton, Factory).

Estructurales: Componen clases y objetos (Adapter, Facade).

De comportamiento: Controlan la comunicación entre objetos (Observer, Strategy).

# data[].attributes.attachment_caption
Este patrón garantiza que solo exista una instancia de una clase en toda la aplicación.
En el código, la clase Configuracion crea una única instancia compartida entre todas las variables que la usan.

# data[].attributes.attachment_caption
El patrón Factory se usa para crear objetos sin especificar su clase exacta.
En el programa, CreadorTransporte devuelve objetos Camion o Barco según el tipo solicitado, simplificando la creación y mantenimiento del código.

# data[].attributes.attachment_caption
El patrón Observer permite que un objeto notifique a otros automáticamente cuando ocurre un cambio.
En el código, el Sujeto avisa a varios Observadores (como Paolo y Alex) sobre eventos o actualizaciones.

# data[].attributes.attachment_caption
El patrón Strategy permite cambiar el comportamiento de un algoritmo dinámicamente.
En el ejemplo, el usuario puede elegir entre pagar con tarjeta o con PayPal sin modificar el código principal.