**Usage:** Bounded contexts sometimes need to talk to each other. These are common ways to do that
**Partnership**
- One context sends a message or calls a function in another.
- Can be async (like an event) or sync (like an API call).
- This creates a link between the two.
**Example:**
`eventBus.publish("OrderPlaced")`
---
**Shared Kernel**
- Two contexts share the same code or database tables.
- Use only when the teams are small and tightly connected.
- It can create problems if teams move at different speeds.
**Example:**
For `Suppliers` to communicate with `Customer` both use the same `Market` class from a shared module.
---
**Anti-Corruption Layer (ACL)**
- One context talks to another but protects itself from changes.
- It translates data into its own format.
- Keeps its own rules and terms.
**Example:**
In case of communication between the Legacy Customer entity and the reworked Customer entity, we can have this `CustomerTranslator.getCustomer(customerId)`