Junior — Middle
როგორ განვახორციელოთ მეთოდების სხვადასხვა ფუნქციების შესრულება კლასის შიგნით დამოკიდებული კლასის მიმდინარე მდგომარეობაზე ან რეჟიმზე?
sobes.tech AI
პასუხი AI-სგან
Տարբերակների իրականացման համար, երբ դասի մեթոդների վարքագիծը կախված է ընթացիկ վիճակից կամ աշխատանքի ռեժիմից, հաճախ օգտագործվում է «Վիճակ» (State) դիզայնի նմուշը:
Իդեան այն է, որ դասը ունի ներքին վիճակ, որը ներկայացված է առանձին օբյեկտներով, որոնք իրականացնում են ընդհանուր ինտերֆեյս։ Մեթոդի կանչը փոխանցվում է ընթացիկ վիճակին, որը որոշում է կոնկրետ վարքագիծը:
Java-ում օրինակ՝
interface State {
void handle();
}
class StateA implements State {
public void handle() {
System.out.println("Վիճակ A-ի վարքագիծ");
}
}
class StateB implements State {
public void handle() {
System.out.println("Վիճակ B-ի վարքագիծ");
}
}
class Context {
private State state;
public void setState(State state) {
this.state = state;
}
public void request() {
state.handle();
}
}
// Օգտագործում
Context context = new Context();
context.setState(new StateA());
context.request(); // Վիճակ A-ի վարքագիծ
context.setState(new StateB());
context.request(); // Վիճակ B-ի վարքագիծ
Այս կերպ, մեթոդների վարքագիծը կարող է փոխվել առանց դասի ներսում բազմաթիվ պայմանական օպերատորների օգտագործման։