狀態模式
當涉及狀態模式的示例時,我們可以以一個簡單的交通訊號燈系統為例。在這個示例中,我們有三種狀態:紅燈、綠燈和黃燈。根據當前狀態的不同,交通訊號燈將採取不同的行為。
首先,我們需要定義一個狀態介面,表示交通訊號燈的狀態:
// 狀態介面
public interface TrafficLightState {
void display();
}
然後,我們可以實現具體的狀態類,例如紅燈狀態、綠燈狀態和黃燈狀態:
// 紅燈狀態
public class RedLightState implements TrafficLightState {
@Override
public void display() {
System.out.println("紅燈停");
}
}
// 綠燈狀態
public class GreenLightState implements TrafficLightState {
@Override
public void display() {
System.out.println("綠燈行");
}
}
// 黃燈狀態
public class YellowLightState implements TrafficLightState {
@Override
public void display() {
System.out.println("黃燈等待");
}
}
接下來,我們需要一個上下文類來維護當前的狀態,並根據狀態的變化呼叫相應的行為:
// 交通訊號燈上下文類
public class TrafficLightContext {
private TrafficLightState state;
public TrafficLightContext() {
// 初始狀態為紅燈
state = new RedLightState();
}
public void setState(TrafficLightState state) {
this.state = state;
}
public void displayState() {
state.display();
}
}
最後,我們可以建立一個簡單的示例來演示狀態模式的使用:
public class Main {
public static void main(String[] args) {
TrafficLightContext context = new TrafficLightContext();
context.displayState(); // 當前狀態為紅燈
context.setState(new GreenLightState());
context.displayState(); // 當前狀態為綠燈
context.setState(new YellowLightState());
context.displayState(); // 當前狀態為黃燈
}
}