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 томонидан ишлаб берилди
Шу тарзда, шаблон сўров юборувчи ва қабул қилувчи ўртасидаги қатъий боғлиқликни олдини олишга ёрдам беради, тизимни янада мослашувчан ва кенгайтириладиган қилади.