Design Patterns - State Pattern
Nel modello State il comportamento di una classe cambia in base al suo stato. Questo tipo di modello di progettazione rientra nel modello di comportamento.
In State pattern, creiamo oggetti che rappresentano vari stati e un oggetto contesto il cui comportamento varia al variare del suo oggetto di stato.
Implementazione
Creeremo un'interfaccia di stato che definisce un'azione e classi di stato concrete che implementano l' interfaccia di stato . Il contesto è una classe che porta uno Stato.
StatePatternDemo , la nostra classe demo, utilizzerà gli oggetti Context e state per dimostrare il cambiamento nel comportamento Context in base al tipo di stato in cui si trova.
Passo 1
Crea un'interfaccia.
State.java
public interface State {
public void doAction(Context context);
}
Passo 2
Crea classi concrete che implementano la stessa interfaccia.
StartState.java
public class StartState implements State {
public void doAction(Context context) {
System.out.println("Player is in start state");
context.setState(this);
}
public String toString(){
return "Start State";
}
}
StopState.java
public class StopState implements State {
public void doAction(Context context) {
System.out.println("Player is in stop state");
context.setState(this);
}
public String toString(){
return "Stop State";
}
}
Passaggio 3
Crea classe contesto .
Context.java
public class Context {
private State state;
public Context(){
state = null;
}
public void setState(State state){
this.state = state;
}
public State getState(){
return state;
}
}
Passaggio 4
Usa il contesto per vedere il cambiamento nel comportamento quando cambia lo stato .
StatePatternDemo.java
public class StatePatternDemo {
public static void main(String[] args) {
Context context = new Context();
StartState startState = new StartState();
startState.doAction(context);
System.out.println(context.getState().toString());
StopState stopState = new StopState();
stopState.doAction(context);
System.out.println(context.getState().toString());
}
}
Passaggio 5
Verifica l'output.
Player is in start state
Start State
Player is in stop state
Stop State