Design to an Interface

Interfaces are simply a specification/contract/agreement as to how two or more objects can communicate/interact with each other.

Unlocking Agility with Pluggable Architecture and Event Bus Connections

At its core, an Event Bus is a mechanism for handling events across different parts of an application. It acts as a mediator, enabling components to publish events (like “user created” or “order processed”) and others to subscribe to those events without needing to know about each other directly.