Sobes.tech
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.