The mediator pattern defines an object that encapsulates how a set of objects interact. It promotes loose coupling by preventing objects from referring to each other directly, and allows their interaction to vary independently. The mediator implements cooperative behavior by routing requests between colleagues. This limits subclassing but decouples objects and simplifies protocols. The mediator is aware of all colleagues and their purposes for communication.