Junior — Middle
Маслиҳат медиҳед, ки намунаи Chain of Responsibility-ро дар коди барномасозӣ чӣ гуна татбиқ кардан мумкин аст?
sobes.tech AI
Ҷавоб аз AI
Модели занҷири масъулият имкон медиҳад, ки дархостро дар зери занҷири коркардкунандагон гузаронанд, то он ки яке аз онҳо онро коркард кунад.
Масалан дар C#:
// Коркарди абстрактӣ
abstract class Handler
{
protected Handler next;
public void SetNext(Handler nextHandler) {
next = nextHandler;
}
public virtual void Handle(string request) {
if (next != null) {
next.Handle(request);
}
}
}
// Коркарди мушаххас
class ConcreteHandlerA : Handler
{
public override void Handle(string request) {
if (request == "A") {
Console.WriteLine("Коркарди ConcreteHandlerA");
} else {
base.Handle(request);
}
}
}
class ConcreteHandlerB : Handler
{
public override void Handle(string request) {
if (request == "B") {
Console.WriteLine("Коркарди ConcreteHandlerB");
} else {
base.Handle(request);
}
}
}
// Истифода
var handlerA = new ConcreteHandlerA();
var handlerB = new ConcreteHandlerB();
handlerA.SetNext(handlerB);
handlerA.Handle("B"); // Натиҷа: Коркарди ConcreteHandlerB
Дар ин мисол, дархост дар зери занҷири коркардкунандагон гузаронида мешавад, то он ки як мувофиқ пайдо шавад.