Sobes.tech
Back to questions
Junior — Middle
69

Можешь привести пример реализации паттерна Chain of Responsibility в программном коде?

Companies where asked
AstonAston

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

В этом примере запрос передаётся по цепочке обработчиков, пока не найдётся подходящий.