Sobes.tech
Junior — Middle
95

Kas saaksite selgitada vastutuse ahela mustri tööpõhimõtet ja millistes olukordades seda kasutatakse?

Ettevõtted, kust küsiti
IT OneIT One

Vastus AI-lt

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);
        }
    }
}

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