The Mediator design pattern provides a solution:
Define a separate Mediator object that encapsulates how a set of objects interact.
Objects interact with a Mediator object
instead of interacting with each other directly.
Describing the Mediator design in more detail is the theme of the following sections.
See Applicability section for all problems Mediator can solve.