Pola Desain - Pola Status

Dalam pola State, perilaku kelas berubah berdasarkan statusnya. Jenis pola desain ini berada di bawah pola perilaku.

Dalam pola Status, kami membuat objek yang mewakili berbagai status dan objek konteks yang perilakunya bervariasi saat objek statusnya berubah.

Penerapan

Kita akan membuat antarmuka State yang mendefinisikan kelas negara tindakan dan konkret yang mengimplementasikan antarmuka State . Konteks adalah kelas yang membawa Negara.

StatePatternDemo , kelas demo kami, akan menggunakan objek Konteks dan status untuk mendemonstrasikan perubahan dalam perilaku Konteks berdasarkan jenis statusnya .

Langkah 1

Buat antarmuka.

State.java

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

Langkah 2

Buat kelas konkret dengan menerapkan antarmuka yang sama.

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

LANGKAH 3

Buat Kelas Konteks .

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

LANGKAH 4

Gunakan Konteks untuk melihat perubahan perilaku saat Status berubah.

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

LANGKAH 5

Verifikasi hasilnya.

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