Назад к вопросам
СБЕР
Junior — Middle
66
Можете объяснить, что представляет собой паттерн Chain of Response и как он используется?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Паттерн Chain of Responsibility (Цепочка обязанностей) — это поведенческий шаблон проектирования, который позволяет передавать запрос последовательно по цепочке обработчиков, пока один из них не обработает запрос.
Основная идея — каждый обработчик решает, может ли он обработать запрос; если нет, то передает его следующему обработчику в цепочке.
Применение в iOS:
- Обработка событий или ошибок, когда несколько объектов могут потенциально обработать событие.
- Делегирование задач по цепочке, например, обработка пользовательского ввода или сетевых ответов.
Пример упрощённой реализации на Swift:
protocol Handler {
var next: Handler? { get set }
func handle(request: String)
}
class ConcreteHandlerA: Handler {
var next: Handler?
func handle(request: String) {
if request == "A" {
print("Обработано ConcreteHandlerA")
} else {
next?.handle(request: request)
}
}
}
class ConcreteHandlerB: Handler {
var next: Handler?
func handle(request: String) {
if request == "B" {
print("Обработано ConcreteHandlerB")
} else {
next?.handle(request: request)
}
}
}
// Использование
let handlerA = ConcreteHandlerA()
let handlerB = ConcreteHandlerB()
handlerA.next = handlerB
handlerA.handle(request: "B") // Выведет: Обработано ConcreteHandlerB
Таким образом, паттерн помогает избежать жесткой связи между отправителем и получателем запроса, делая систему более гибкой и расширяемой.