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

Паттерн Chain of Responsibility позволяет передавать запрос по цепочке обработчиков, пока один из них не обработает запрос.

Короткий ответ

Что ответить на собеседовании

Паттерн Chain of Responsibility позволяет передавать запрос по цепочке обработчиков, пока один из них не обработает запрос.

Подробный разбор

Ответ с пояснениями

Паттерн 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

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

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку