Sobes.tech
Junior — Middle

Կարող եք բացատրել State ձևանմուշի կոնցեպցիան և այն ինչպես է օգտագործվում օբյեկտային ծրագրավորման մեջ։

sobes.tech AI

Պատասխան AI-ից

State մոդելը թույլ է տալիս օբյեկտին փոխել իր վարքագիծը ներքին վիճակի վրա հիմնվելով, փոխելով վիճակի դասը գործարկման ժամանակ։ Սա օգնում է խուսափել մեծ պայմանական օպերատորներից և դարձնել կոդը ավելի ճկուն և ընդարձակելի։

Օբյեկտ-կենտրոն ծրագրավորման մեջ, State մոդելը իրականացնելիս ստեղծվում է հիմնական վիճակի ինտերֆեյսը և մի քանի կոնկրետ վիճակի դասեր։ Կոնտեքստը (հիմնական օբյեկտը) պահում է ընթացիկ վիճակի հղումը և փոխանցում է նրան զանգահարումները։

Օրինակ Java-ում՝

interface State {
    void handle(Context context);
}

class ConcreteStateA implements State {
    public void handle(Context context) {
        System.out.println("Ա վիճակը կառավարում է հարցումը։");
        context.setState(new ConcreteStateB());
    }
}

class ConcreteStateB implements State {
    public void handle(Context context) {
        System.out.println("Բ վիճակը կառավարում է հարցումը։");
        context.setState(new ConcreteStateA());
    }
}

class Context {
    private State state;

    public Context(State state) {
        this.state = state;
    }

    public void setState(State state) {
        this.state = state;
    }

    public void request() {
        state.handle(this);
    }
}

// Օգտագործում՝
Context context = new Context(new ConcreteStateA());
context.request(); // Ա վիճակը կառավարում է հարցումը։
context.request(); // Բ վիճակը կառավարում է հարցումը։

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