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.