Junior — Middle
94
Kunt u het principe van de werking van het Chain of Responsibility-patroon uitleggen en in welke situaties het wordt toegepast?
Bedrijven waar gevraagd werd
Antwoord van AI
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);
}
}
}
Здесь запрос передаётся по цепочке обработчиков, пока не найдётся подходящий.