Middle — Middle+
Vai jūs varat izskaidrot iekšējo State modeļa īstenojumu un kā tas pārvalda objekta stāvokli?
sobes.tech AI
Atbilde no AI
State paraugs ļauj objektam mainīt savu uzvedību atkarībā no iekšējā stāvokļa, mainot stāvokļa klasi izpildes laikā.
Iekšējā realizācija parasti balstās uz šādiem principiem:
- Pastāv konteksts (Context), kurā ir atsauce uz pašreizējo stāvokļa objektu (State).
- Interfeiss State definē metožu kopumu, kas realizē dažādus stāvokļus.
- Katrs konkrētais stāvoklis realizē šo interfeisu un nosaka uzvedību šim stāvoklim.
- Konteksts nodod metožu izsaukumus pašreizējam stāvoklim.
- Vajadzības gadījumā stāvoklis var pats mainīties, mainot atsauci kontekstā uz citu stāvokļa objektu.
Swift (iOS) piemērs:
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("Stāvoklis A apstrādā pieprasījumu")
context.changeState(to: ConcreteStateB())
}
}
class ConcreteStateB: State {
func handle(context: Context) {
print("Stāvoklis B apstrādā pieprasījumu")
context.changeState(to: ConcreteStateA())
}
}
// Lietošana:
let context = Context(state: ConcreteStateA())
context.request() // Stāvoklis A apstrādā pieprasījumu
context.request() // Stāvoklis B apstrādā pieprasījumu
Šādā veidā objekts dinamiski maina savu uzvedību, vienkārši pārslēdzot iekšējo stāvokli.