Junior — Middle
Tudná elmagyarázni, hogy mi az a Chain of Response minta, és hogyan használják?
sobes.tech MI
Válasz az MI-től
A Felelősségi lánc (Chain of Responsibility) minta egy viselkedési sablon, amely lehetővé teszi egy kérés egymást követő továbbítását egy kezelő láncon keresztül, amíg valamelyik kezeli azt.
A fő ötlet az, hogy minden kezelő eldönti, képes-e kezelni a kérést; ha nem, akkor továbbítja a lánc következő elemének.
Alkalmazás iOS-en:
- Események vagy hibák kezelése, amikor több objektum potenciálisan kezelheti az eseményt.
- Feladatok lánc szerinti delegálása, például felhasználói bemenet vagy hálózati válaszok feldolgozása.
Egyszerűsített Swift példakód:
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 által feldolgozva")
} else {
next?.handle(request: request)
}
}
}
class ConcreteHandlerB: Handler {
var next: Handler?
func handle(request: String) {
if request == "B" {
print("ConcreteHandlerB által feldolgozva")
} else {
next?.handle(request: request)
}
}
}
// Használat
let handlerA = ConcreteHandlerA()
let handlerB = ConcreteHandlerB()
handlerA.next = handlerB
handlerA.handle(request: "B") // Kimenet: ConcreteHandlerB által feldolgozva
Így a minta segít elkerülni a szigorú kapcsolatot a kérés küldője és fogadója között, ezáltal a rendszer rugalmasabb és bővíthetőbb lesz.