Connects systems or external services.

Reliable method for publishing database events.

Provides sequential access to collection elements.

Depend on abstractions rather than concrete implementations.

Converts one interface to another.

Pattern for reliably processing incoming messages.

Centralizes communication between components.

Avoid unnecessary duplication in code.

Component providing access to an external resource.

Gradually replaces parts of a legacy system.