Can you explain the main ways to implement the Responder Chain pattern?
sobes.tech AI
Answer from AI
The Responder Chain pattern is used to pass events or requests through a chain of objects until one of them handles the event.
Main implementation methods:
-
Chain through references to the next object — each object contains a reference to the next handler. If the current one cannot handle the event, it passes it further.
-
Using delegates or protocols — an object calls a delegate method, which can pass the event further.
-
In iOS (UIKit) — UIResponder implements the event handling chain. For example, touch events are passed from UIView to its superview, then to the controller, and so on.
Example in Swift:
class Handler {
var next: Handler?
func handle(request: String) {
if canHandle(request) {
print("Handled: \(request)")
} else {
next?.handle(request: request)
}
}
func canHandle(_ request: String) -> Bool {
return false
}
}
class ConcreteHandlerA: Handler {
override func canHandle(_ request: String) -> Bool {
return request == "A"
}
}
class ConcreteHandlerB: Handler {
override func canHandle(_ request: String) -> Bool {
return request == "B"
}
}
let handlerA = ConcreteHandlerA()
let handlerB = ConcreteHandlerB()
handlerA.next = handlerB
handlerA.handle(request: "B") // Handled: B
Thus, the Responder Chain allows flexible hierarchical event handling without tight coupling between sender and receiver.