狀態模式:
代碼實例
public interface StateInterface {
public void handler(String src);
}
具體狀態角色1
public class concreteState1 implements StateInterface{
@Override
public void handler(String src) {
// TODO Auto-generated method stub
System.out.println("concreteState1"+src);
}
}
具體狀態角色2public class concreteState2 implements StateInterface{
@Override
public void handler(String src) {
// TODO Auto-generated method stub
System.out.println("concreteState2"+src);
}
}
具體狀態角色3public class concreteState3 implements StateInterface{
@Override
public void handler(String src) {
// TODO Auto-generated method stub
System.out.println("concreteState3"+src);
}
}
環境角色
public class Context {
//環境的引用
private StateInterface stateInterface;
//模擬在不同的環境下實例不同的具體抽象角色
public void setConcreteStateInterface(StateInterface stateInterface){
this.stateInterface = stateInterface;
}
//提供一個方法調用具體抽象角色在不同狀態下的行爲
public void request(String src){
stateInterface.handler(src);
}
}
客戶端
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Context context = new Context();
StateInterface stateInterface1 = new concreteState1();
StateInterface stateInterface2 = new concreteState2();
StateInterface stateInterface3 = new concreteState3();
context.setConcreteStateInterface(stateInterface1);
context.request("第一個狀態");
context.setConcreteStateInterface(stateInterface2);
context.request("第二個狀態");
context.setConcreteStateInterface(stateInterface3);
context.request("第三個狀態");
}
}
運行結果
concreteState1第一個狀態
concreteState2第二個狀態
concreteState3第三個狀態