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(); // Բ վիճակը կառավարում է հարցումը։
Այսպիսով, օբյեկտի վարքագիծը փոխվում է դինամիկորեն վիճակի փոփոխության ժամանակ։