Junior — Middle
Կարող եք բացատրել պատասխանատվության շղթայի մոդելի աշխատանքի սկզբունքը և որ իրավիճակներում է այն կիրառվում:
sobes.tech AI
Պատասխան 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);
}
}
}
Здесь запрос передаётся по цепочке обработчиков, пока не найдётся подходящий.