When would you use the Mediator pattern?
When you need to co-ordinate state changes between other objects by using one object.
When you need to add functionality to a class without changing its interface.
When you need create a separation between abstractions and classes that implement those abstractions.
You need a class that will be used in lots of different applications where the logic will only change slightly.