[關鍵字]:java,design pattern,設計模式,《Java與模式》,state pattern,狀態模式
[環境]:StarUML5.0 + JDK6
[作者]:Winty (wintys@gmail.com)
[正文]:
人的狀態變化:

狀態模式類圖:
/**
* 狀態模式:state pattern
*
* 不使用狀態模式時,代碼可能會是這樣:
* if (state.equals("awake")){
* System.out.println("awake:工作.");
* }
* else if(state.equals("asleep")){
* System.out.println("asleep:做夢.");
* }
* else ...
*
* @version 2009-5-18
* @author Winty(wintys@gmail.com)
*/
public class StateTest{
public static void main(String[] args){
Person person = new Person();
person.doAction();
person.setState(new Asleep());
person.doAction();
}
}
/**
*環境:Context
*/
class Person{
private State state = new Awake();
public void setState(State state){
this.state = state;
}
public void doAction(){
state.doAction();
}
}
/**
*抽象狀態:State
*/
interface State{
public void doAction();
}
/**
*具體狀態
*/
class Awake implements State{
public void doAction(){
System.out.println("awake:工作.");
}
}
/**
*具體狀態
*/
class Asleep implements State{
public void doAction(){
System.out.println("asleep:做夢.");
}
}
posted on 2009-05-18 23:03
天堂露珠 閱讀(1199)
評論(1) 編輯 收藏 所屬分類:
Pattern