Sobes.tech
Назад к вопросам
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

Таким образом, паттерн помогает избежать жесткой связи между отправителем и получателем запроса, делая систему более гибкой и расширяемой.