Modèles de conception - Modèle d'état

Dans le modèle d'état, le comportement d'une classe change en fonction de son état. Ce type de modèle de conception relève du modèle de comportement.

Dans le modèle d'état, nous créons des objets qui représentent différents états et un objet de contexte dont le comportement varie à mesure que son objet d'état change.

la mise en oeuvre

Nous allons créer une interface State définissant une action et des classes d'état concrètes implémentant l' interface State . Le contexte est une classe qui porte un état.

StatePatternDemo , notre classe de démonstration, utilisera des objets de contexte et d'état pour démontrer le changement de comportement du contexte en fonction du type d'état dans lequel il se trouve.

Étape 1

Créez une interface.

State.java

public interface State {
   public void doAction(Context context);
}

Étape 2

Créez des classes concrètes mettant en œuvre la même interface.

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";
   }
}

Étape 3

Créer une classe de contexte .

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;
   }
}

Étape 4

Utilisez le contexte pour voir le changement de comportement lorsque l' état change.

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());
   }
}

Étape 5

Vérifiez la sortie.

Player is in start state
Start State
Player is in stop state
Stop State