Sobes.tech
Middle — Middle+

State nümunəsinin daxili tətbiqini və onun obyektin vəziyyətini necə idarə etdiyini izah edə bilərsinizmi?

sobes.tech Süni İntellekt

AI-dan cavab

State Pattern obyekti daxili vəziyyətinə görə davranışını dəyişməsinə imkan verir və icra zamanı vəziyyət sinfini dəyişir.

Daxili tətbiq adətən aşağıdakı prinsiplərə əsaslanır:

  • Kontekst (Context) mövcuddur və cari vəziyyət obyekti (State) üçün referansa malikdir.
  • State interfeysi müxtəlif vəziyyətləri həyata keçirən metodlar to‘plamini müəyyən edir.
  • Hər bir konkret vəziyyət bu interfeysi həyata keçirir və bu vəziyyət üçün davranışı müəyyən edir.
  • Kontekst metod çağırışlarını cari vəziyyətə yönəldir.
  • Zərurət olduqda, vəziyyət özünü dəyişə bilər və kontekst daxilində referansı başqa vəziyyət obyektinə dəyişir.

Swift (iOS) nümunəsi:

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("Vəziyyət A sorğunu idarə edir")
        context.changeState(to: ConcreteStateB())
    }
}

class ConcreteStateB: State {
    func handle(context: Context) {
        print("Vəziyyət B sorğunu idarə edir")
        context.changeState(to: ConcreteStateA())
    }
}

// İstifadə:
let context = Context(state: ConcreteStateA())
context.request() // Vəziyyət A sorğunu idarə edir
context.request() // Vəziyyət B sorğunu idarə edir

Bu şəkildə, obyekt dinamik olaraq davranışını dəyişir, sadəcə daxili vəziyyətini dəyişməklə.