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 тарабынан иштетилди

Ушул жол менен, үлгү суранычтын жөнөтүүчүсү менен кабыл алуучусу ортосунда катуу байланыш болуудан сактайт, системаны көбүрөөк ийкемдүү жана кеңейтилип турган кылат.