Back to questions
Junior — Middle
65
Можете объяснить концепцию паттерна медиатор и его роль в управлении взаимодействием объектов?
Companies where asked
Sector Tree
Answer from AI
sobes.tech AI
Паттерн "Медиатор" (Mediator) используется для упрощения взаимодействия между множеством объектов, уменьшая количество прямых связей между ними. Вместо того, чтобы объекты напрямую общались друг с другом, они взаимодействуют через централизованный объект — медиатор.
Роль медиатора:
- Централизует логику взаимодействия.
- Уменьшает связанность компонентов.
- Облегчает изменение взаимодействия без изменения самих объектов.
Пример на C#:
// Интерфейс медиатора
public interface IMediator
{
void Notify(object sender, string ev);
}
// Конкретный медиатор
public class ConcreteMediator : IMediator
{
private Component1 _component1;
private Component2 _component2;
public ConcreteMediator(Component1 c1, Component2 c2)
{
_component1 = c1;
_component1.SetMediator(this);
_component2 = c2;
_component2.SetMediator(this);
}
public void Notify(object sender, string ev)
{
if (ev == "A")
{
Console.WriteLine("Mediator reacts on A and triggers following operations:");
_component2.DoC();
}
else if (ev == "D")
{
Console.WriteLine("Mediator reacts on D and triggers following operations:");
_component1.DoB();
_component2.DoC();
}
}
}
// Компоненты
public class Component1
{
private IMediator _mediator;
public void SetMediator(IMediator mediator)
{
_mediator = mediator;
}
public void DoA()
{
Console.WriteLine("Component 1 does A.");
_mediator.Notify(this, "A");
}
public void DoB()
{
Console.WriteLine("Component 1 does B.");
}
}
public class Component2
{
private IMediator _mediator;
public void SetMediator(IMediator mediator)
{
_mediator = mediator;
}
public void DoC()
{
Console.WriteLine("Component 2 does C.");
}
public void DoD()
{
Console.WriteLine("Component 2 does D.");
_mediator.Notify(this, "D");
}
}
Таким образом, медиатор управляет взаимодействием компонентов, делая систему более гибкой и поддерживаемой.