Junior — Middle
Kunt u het concept van het State-patroon uitleggen en hoe het wordt gebruikt in objectgeoriënteerd programmeren?
sobes.tech AI
Antwoord van AI
Het State-patroon stelt een object in staat om zijn gedrag te wijzigen afhankelijk van de interne toestand, door de toestandklasse tijdens de uitvoering te veranderen. Dit helpt grote conditionele operatoren te vermijden en de code flexibeler en uitbreidbaarder te maken.
In objectgeoriënteerd programmeren wordt voor de implementatie van het State-patroon een basise interface voor de toestand en meerdere concrete toestandklassen gemaakt. De context (het hoofdobject) houdt een verwijzing naar de huidige toestand en delegeert oproepen aan deze.
Voorbeeld in Java:
interface State {
void handle(Context context);
}
class ConcreteStateA implements State {
public void handle(Context context) {
System.out.println("State A behandelt de aanvraag.");
context.setState(new ConcreteStateB());
}
}
class ConcreteStateB implements State {
public void handle(Context context) {
System.out.println("State B behandelt de aanvraag.");
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);
}
}
// Gebruik:
Context context = new Context(new ConcreteStateA());
context.request(); // State A behandelt de aanvraag.
context.request(); // State B behandelt de aanvraag.
Op deze manier verandert het gedrag van het object dynamisch bij het wisselen van toestand.