Sobes.tech
Middle — Middle+

State naqshining ichki amalga oshirilishini va u ob'ekt holatini qanday boshqarishini tushuntirib bera olasizmi?

sobes.tech AI

AIdan javob

State Pattern obyektinga ichki holatiga qarab o‘z xulq-atvorini o‘zgartirish imkonini beradi va bajarilish vaqtida holat sinfini o‘zgartiradi.

Ichki amalga oshirish odatda quyidagi tamoyillarga asoslanadi:

  • Kontekst (Context) mavjud bo‘lib, u hozirgi holat obyekti (State)ga havola qiladi.
  • State interfeysi turli holatlarni amalga oshiradigan metodlar to‘plamini belgilaydi.
  • Har bir aniq holat bu interfeysni amalga oshiradi va bu holat uchun xulq-atvorni belgilaydi.
  • Kontekst metod chaqiruvlarini hozirgi holatga yuboradi.
  • Zarur bo‘lsa, holat o‘zini o‘zi o‘zgartirishi mumkin, kontekstdagi havolani boshqa holat obyekti bilan almashtirish orqali.

Swift (iOS) misoli:

protocol State {
    func handle(context: Context)
}

class Context {
    private var state: State

    init(state: State) {
        self.state = state
    }

    func request() {
        state.handle(context: self)
    }

    func changeState(to newState: State) {
        self.state = newState
    }
}

class ConcreteStateA: State {
    func handle(context: Context) {
        print("Holat A so‘rovni boshqaradi")
        context.changeState(to: ConcreteStateB())
    }
}

class ConcreteStateB: State {
    func handle(context: Context) {
        print("Holat B so‘rovni boshqaradi")
        context.changeState(to: ConcreteStateA())
    }
}

// Foydalanish:
let context = Context(state: ConcreteStateA())
context.request() // Holat A so‘rovni boshqaradi
context.request() // Holat B so‘rovni boshqaradi

Shu tarzda, ob'ekt dinamik ravishda o‘z xulq-atvorini o‘zgartiradi, faqat ichki holatini almashtirish orqali.