Mẫu thiết kế - Mẫu trạng thái
Trong State pattern, một hành vi của lớp thay đổi dựa trên trạng thái của nó. Loại mẫu thiết kế này nằm dưới mẫu hành vi.
Trong State pattern, chúng ta tạo các đối tượng đại diện cho các trạng thái khác nhau và một đối tượng ngữ cảnh có hành vi thay đổi khi đối tượng trạng thái của nó thay đổi.
Thực hiện
Chúng tôi sẽ tạo ra một nhà nước giao diện xác định một hành động và các lớp học tình trạng bê tông thực hiện Nhà nước giao diện. Context là một lớp mang State.
StatePatternDemo , lớp demo của chúng tôi, sẽ sử dụng các đối tượng Context và trạng thái để chứng minh sự thay đổi trong hành vi của Context dựa trên loại trạng thái mà nó đang ở.
Bước 1
Tạo giao diện.
State.java
public interface State {
public void doAction(Context context);
}
Bước 2
Tạo các lớp cụ thể triển khai cùng một giao diện.
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";
}
}
Bước 3
Tạo lớp ngữ cảnh .
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;
}
}
Bước 4
Sử dụng Ngữ cảnh để xem sự thay đổi trong hành vi khi Trạng thái thay đổi.
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());
}
}
Bước 5
Xác minh kết quả đầu ra.
Player is in start state
Start State
Player is in stop state
Stop State