[環(huán)境]:StarUML5.0 + JDK6
[作者]:Winty (wintys@gmail.com)
[正文]:
人的狀態(tài)變化:

狀態(tài)模式類圖:

/**
* 狀態(tài)模式:state pattern
*
* 不使用狀態(tài)模式時,代碼可能會是這樣:
* 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();
}
}
/**
*環(huán)境:Context
*/
class Person{
private State state = new Awake();
public void setState(State state){
this.state = state;
}
public void doAction(){
state.doAction();
}
}
/**
*抽象狀態(tài):State
*/
interface State{
public void doAction();
}
/**
*具體狀態(tài)
*/
class Awake implements State{
public void doAction(){
System.out.println("awake:工作.");
}
}
/**
*具體狀態(tài)
*/
class Asleep implements State{
public void doAction(){
System.out.println("asleep:做夢.");
}
}
* 狀態(tài)模式:state pattern
*
* 不使用狀態(tài)模式時,代碼可能會是這樣:
* 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();
}
}
/**
*環(huán)境:Context
*/
class Person{
private State state = new Awake();
public void setState(State state){
this.state = state;
}
public void doAction(){
state.doAction();
}
}
/**
*抽象狀態(tài):State
*/
interface State{
public void doAction();
}
/**
*具體狀態(tài)
*/
class Awake implements State{
public void doAction(){
System.out.println("awake:工作.");
}
}
/**
*具體狀態(tài)
*/
class Asleep implements State{
public void doAction(){
System.out.println("asleep:做夢.");
}
}