Middle — Middle+
Կարող եք բացատրել State մոդելի ներքին իրականացմանը և ինչպես է այն կառավարում օբյեկտի վիճակը:
sobes.tech AI
Պատասխան AI-ից
State ձևանիշը թույլ է տալիս օբյեկտին փոխել իր վարքագիծը ներքին վիճակի վրա հիմնվելով, փոխելով վիճակի դասը գործարկման ժամանակ:
Ներքին իրականացման հիմնական սկզբունքները սովորաբար հետևյալն են.
- Կոնտեքստ (Context) կա, որը պահպանում է հղում ընթացիկ վիճակի օբյեկտին (State):
- State ինտերֆեյսը սահմանում է մեթոդների հավաքածու, որոնք իրականացնում են տարբեր վիճակներ:
- Յուրաքանչյուր կոնկրետ վիճակ իրականացնում է այդ ինտերֆեյսը և սահմանում է այդ վիճակի վարքագիծը:
- Կոնտեքստը փոխանցում է մեթոդների կանչերը ընթացիկ վիճակին:
- Երբ անհրաժեշտ է, վիճակը կարող է ինքն իրեն փոխել՝ փոխելով հղումը կոնտեքստում այլ վիճակի օբյեկտի:
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("Անցումը A կառավարում է հարցումը")
context.changeState(to: ConcreteStateB())
}
}
class ConcreteStateB: State {
func handle(context: Context) {
print("Անցումը B կառավարում է հարցումը")
context.changeState(to: ConcreteStateA())
}
}
// Օգտագործում:
let context = Context(state: ConcreteStateA())
context.request() // Անցումը A կառավարում է հարցումը
context.request() // Անցումը B կառավարում է հարցումը
Այսպիսով, օբյեկտը դինամիկ կերպով փոխում է իր վարքագիծը՝ պարզապես փոխելով իր ներքին վիճակը։