Junior — Middle
95
Kas saaksite selgitada vastutuse ahela mustri tööpõhimõtet ja millistes olukordades seda kasutatakse?
Ettevõtted, kust küsiti
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);
}
}
}
Здесь запрос передаётся по цепочке обработчиков, пока не найдётся подходящий.