Middle — Middle+
Puteți explica implementarea internă a pattern-ului State și cum gestionează starea obiectului?
sobes.tech AI
Răspuns de la AI
Modelul State permite unui obiect să își schimbe comportamentul în funcție de starea internă, schimbând clasa de stare în timpul execuției.
Implementarea internă se bazează de obicei pe următoarele principii:
- Există un context (Context) care conține o referință la obiectul de stare curent (State).
- Interfața State definește un set de metode care implementează diferite stări.
- Fiecare stare concretă implementează această interfață și definește comportamentul pentru acea stare.
- Contextul delegă apelurile de metode către starea curentă.
- Când este necesar, starea se poate schimba pe sine însăși, modificând referința în context către un alt obiect de stare.
Exemplu în Swift (iOS):
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("Starea A gestionează cererea")
context.changeState(to: ConcreteStateB())
}
}
class ConcreteStateB: State {
func handle(context: Context) {
print("Starea B gestionează cererea")
context.changeState(to: ConcreteStateA())
}
}
// Utilizare:
let context = Context(state: ConcreteStateA())
context.request() // Starea A gestionează cererea
context.request() // Starea B gestionează cererea
Astfel, obiectul își schimbă comportamentul dinamic, pur și simplu schimbând starea internă.