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:
Note
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 that enables other ones to communicate with each other instead of doing this directly. This reduces dependencies between them, which makes a program easy to change and maintain in the future as well as have it properly tested.
Class diagram
Let's imagine...