Mediator
Applicability
Use the Mediator pattern when
-
a set of objects communicate in well-defined but complex ways. The
resulting interdependencies are unstructured and difficult to
understand.
-
reusing an object is difficult because it refers to and communicates
with many other objects.
-
a behavior that's distributed between several classes should be
customizable without a lot of subclassing.