The mediator design pattern
Real-world software projects usually contain a large number of different classes. This helps to distribute complexity and logic so that each class does one specific thing, which is simple, rather than many complex tasks. This, however, requires classes to communicate with each other in some way in order to realize some specific functionality, but then keeping the loose coupling principle in place could become a challenge. The purpose of the mediator design pattern is to:
Define an object that encapsulates how a set of other objects interact with each other in order to promote loose coupling and allow us to vary class interactions independently.
The mediator design pattern defines a specific object called mediator ...