Back to questions
Aston
Junior — Middle
69
Можешь привести пример реализации паттерна Chain of Responsibility в программном коде?
Companies where asked
Answer from AI
sobes.tech AI
Паттерн Chain of Responsibility позволяет передавать запрос по цепочке обработчиков, пока один из них не обработает запрос.
Пример на 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
В этом примере запрос передаётся по цепочке обработчиков, пока не найдётся подходящий.