Sobes.tech
Junior — Middle
90

¿Puede explicar el principio de funcionamiento del patrón Chain of Responsibility y en qué situaciones se aplica?

Empresas donde se preguntó
IT OneIT One

Respuesta de la IA

sobes.tech AI

Шаблон Chain of Responsibility (Цепочка обязанностей) позволяет передавать запросы по цепочке обработчиков, пока один из них не обработает запрос. Каждый обработчик решает, может ли он обработать запрос; если нет — передаёт его следующему в цепочке.

Применяется, когда:

  • Есть несколько объектов, способных обработать запрос, но заранее неизвестно, кто именно.
  • Нужно избежать жёсткой привязки отправителя запроса к получателю.
  • Требуется динамически изменять цепочку обработчиков.

Пример: обработка событий в GUI, где событие передаётся от одного компонента к другому, пока кто-то не обработает его.

Пример на Java:

abstract class Handler {
    protected Handler next;
    public void setNext(Handler next) {
        this.next = next;
    }
    public abstract void handleRequest(String request);
}

class ConcreteHandlerA extends Handler {
    public void handleRequest(String request) {
        if (request.equals("A")) {
            System.out.println("Обработано A");
        } else if (next != null) {
            next.handleRequest(request);
        }
    }
}

class ConcreteHandlerB extends Handler {
    public void handleRequest(String request) {
        if (request.equals("B")) {
            System.out.println("Обработано B");
        } else if (next != null) {
            next.handleRequest(request);
        }
    }
}

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