A large proportion of the code we write has different components (classes) communicating with one another through direct references or pointers. However, there are situations when you don’t want objects to be necessarily aware of each other’s presence. Or, perhaps you do want them to be aware of one another, but you still don’t want them to communicate through pointers or references because, well, those can go stale and you don’t want to dereference a nullptr, do you?
So the Mediator is a mechanism for facilitating communication between the components. Naturally, the mediator itself ...