Паттерн Mediator.

Когда его применять?

Шаблон обеспечивает взаимодействие множества объектов без необходимости ссылаться друг на друга. Таким образом связь взаимодействующих объектов становится слабее, что делает код более гибким и удобным для будущих изменений. Применяется это когда система очень запутанная и связи между объектами данной системы сложные. Также когда есть необходимость повторно использовать объект, но сделать это невозможно (или очень сложно) в связи с сильной связью с другими объектами.