Sobes.tech
Junior — Middle

Оё метавонед шарҳи кунед, ки намунаи Chain of Response чӣ гуна аст ва чӣ гуна истифода мешавад?

sobes.tech AI

Ҷавоб аз 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 томонидан ишлаб берилди

Шу тарзда, шаблон сўров юборувчи ва қабул қилувчи ўртасидаги қатъий боғлиқликни олдини олишга ёрдам беради, тизимни янада мослашувчан ва кенгайтириладиган қилади.