Tasarım Modelleri - Durum Modeli
Durum modelinde, bir sınıf davranışı durumuna bağlı olarak değişir. Bu tür bir tasarım örüntüsü davranış örüntüsünün kapsamına girer.
Durum modelinde, çeşitli durumları temsil eden nesneler ve durum nesnesi değiştikçe davranışı değişen bir bağlam nesnesi yaratırız.
Uygulama
Biz oluşturmak için gidiyoruz Devlet bir eylem ve uygulama beton devlet sınıflarını tanımlayan bir arayüz Devlet arayüzü. Bağlam , bir Durum taşıyan bir sınıftır.
Demo sınıfımız StatePatternDemo , içinde bulunduğu durumun türüne bağlı olarak Bağlam davranışındaki değişikliği göstermek için Bağlam ve durum nesnelerini kullanacaktır.
Aşama 1
Bir arayüz oluşturun.
State.java
public interface State {
public void doAction(Context context);
}
Adım 2
Aynı arayüzü uygulayan somut sınıflar oluşturun.
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";
}
}
Aşama 3
Bağlam Sınıfı Oluşturun .
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;
}
}
4. adım
Durum değiştiğinde davranıştaki değişikliği görmek için Bağlamı kullanın .
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());
}
}
Adım 5
Çıkışı doğrulayın.
Player is in start state
Start State
Player is in stop state
Stop State