Sobes.tech
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 կառավարում է հարցումը

Այսպիսով, օբյեկտը դինամիկ կերպով փոխում է իր վարքագիծը՝ պարզապես փոխելով իր ներքին վիճակը։