รูปแบบการออกแบบ - รูปแบบของรัฐ
ในรูปแบบสถานะพฤติกรรมของคลาสจะเปลี่ยนไปตามสถานะ รูปแบบการออกแบบประเภทนี้อยู่ภายใต้รูปแบบพฤติกรรม
ในรูปแบบสถานะเราสร้างวัตถุที่แสดงสถานะต่างๆและวัตถุบริบทที่มีพฤติกรรมแตกต่างกันไปเมื่อวัตถุสถานะเปลี่ยนแปลง
การนำไปใช้
เรากำลังจะสร้างอินเทอร์เฟซสถานะที่กำหนดการดำเนินการและคลาสสถานะที่เป็นรูปธรรมโดยใช้อินเทอร์เฟซสถานะ บริบทคือคลาสที่มีสถานะ
StatePatternDemoคลาสสาธิตของเราจะใช้บริบทและออบเจ็กต์สถานะเพื่อแสดงการเปลี่ยนแปลงพฤติกรรมบริบทตามประเภทของสถานะที่อยู่ใน
ขั้นตอนที่ 1
สร้างอินเทอร์เฟซ
State.java
public interface State {
public void doAction(Context context);
}
ขั้นตอนที่ 2
สร้างคลาสที่เป็นรูปธรรมโดยใช้อินเทอร์เฟซเดียวกัน
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";
}
}
ขั้นตอนที่ 3
สร้างคลาสบริบท
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
ใช้บริบทเพื่อดูการเปลี่ยนแปลงพฤติกรรมเมื่อสถานะเปลี่ยนแปลง
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());
}
}
ขั้นตอนที่ 5
ตรวจสอบผลลัพธ์
Player is in start state
Start State
Player is in stop state
Stop State