Mediator
Define an object that encapsulates how a set of objects interact. Mediator promotes
loose coupling by keeping objects from referring to each other explicitly, and it
lets you vary their interaction independently.
Applicability
- Complex interaction exists, and you don't what to bury the interaction in the objects
- Reuse is difficult due to communciation paths
- Distributed behavior should be customizable without a lot of subclassing
Consequences
- Limits subclassing
- Decouples colleagues
- Simplifies object protocols
- Abstracts how objects cooperate
- Centralizes control