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ə.