Junior — Middle
Объектілердің өзара әрекеттесуін басқаруда медиатор үлгісінің концепциясы мен оның рөлін түсіндіре аласыз ба?
sobes.tech AI
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("Медиатор A оқиғасына реакция жасап, келесі операцияларды іске қосады:");
_component2.DoC();
}
else if (ev == "D")
{
Console.WriteLine("Медиатор D оқиғасына реакция жасап, келесі операцияларды іске қосады:");
_component1.DoB();
_component2.DoC();
}
}
}
// Компоненттер
public class Component1
{
private IMediator _mediator;
public void SetMediator(IMediator mediator)
{
_mediator = mediator;
}
public void DoA()
{
Console.WriteLine("Компонент 1 A орындайды.");
_mediator.Notify(this, "A");
}
public void DoB()
{
Console.WriteLine("Компонент 1 B орындайды.");
}
}
public class Component2
{
private IMediator _mediator;
public void SetMediator(IMediator mediator)
{
_mediator = mediator;
}
public void DoC()
{
Console.WriteLine("Компонент 2 C орындайды.");
}
public void DoD()
{
Console.WriteLine("Компонент 2 D орындайды.");
_mediator.Notify(this, "D");
}
}
Осылайша, медиатор компоненттердің өзара әрекеттесуін басқарады, жүйені икемді әрі қолдауға оңай етеді.