第十八篇 設計模式--狀態模式

定義:允許一個對象在其內部狀態改變時改變它的行爲,讓對象看起來似乎修改了它的類。

定義:

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);
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章