定義:允許一個對象在其內部狀態改變時改變它的行爲,讓對象看起來似乎修改了它的類。
定義:
package state_model;
/**
* @author naivor
* 狀態模式-場景類
*/
public class StateModel {
public static void main(String[] args) {
Context context=new Context(new ConcreteStateA());
context.request();
context.request(); //每執行一次請求,就會改變狀態
}
}
/**
*
* @author naivor
* 狀態模式-狀態抽象類
*/
abstract class State{
public abstract void handle(Context context);
}
/**
*
* @author naivor
* 狀態模式-狀態A類
*/
class ConcreteStateA extends State{
@Override
public void handle(Context context) {
context.setState(new ConcreteStateB());
}
}
/**
*
* @author naivor
* 狀態模式-狀態B類
*/
class ConcreteStateB extends State{
@Override
public void handle(Context context) {
context.setState(new ConcreteStateA());
}
}
/**
*
* @author naivor
* 狀態模式-狀態處理類
*/
class Context{
private State state;
public Context(State state) {
this.state=state;
}
public State getState() {
return state;
}
public void setState(State state) {
this.state = state;
}
public void request(){
state.handle(this);
}
}