0
をremovことができれば、我々はまだ、使用:、「他にあれば」それは状態を判断する
簡単なプログラム:「他にあれば」
public class Gamer {
private final int NORMAL_STATE = 0; //正常状态
private final int MALUM_STATE =1; //生病状态
private final int EXCITED_STATE =2; //兴奋状态
private int state = 0;
public void setState(int state){
this.state = state;
}
public void run() {
if(state == NORMAL_STATE) { //正常状态下跑
System.out.println("100米,跑完共用时15秒!");
} else if(state == MALUM_STATE) { //生病状态下跑
System.out.println("100米,跑完共用时20秒!");
} else if(state == EXCITED_STATE) {//兴奋状态下跑
System.out.println("100米,跑完共用时10秒!");
} else { System.out.println("未知的状态");
}
}
}
we use "if else" to judge state. then we use State design pattern to modify code.
public interface IState {
/**
* 起跑
*/
public void doRun();
}
public class ExcitedState implements IState {
public void doRun() {
System.out.println("100米,跑完共用时10钞!");
}
}
public class MalumState implements IState {
public void doRun() {
System.out.println("100米,跑完共用时20秒!");
}
}
public class NormalState implements IState {
public void doRun() {
System.out.println("100米,跑完共用时15秒!");
}
}
public class Gamer {
//当前状态
private IState state = new NormalState();
//改变状态的方法
public void setState(IState state){
this.state = state;
}
//状态行为方法,同上面的Gamer 类相比这里没有if..else if判断
public void run() {
state.doRun();
}
}
public class StateTest {
public static void main(String[] args) {
//没有使用状态设计模式
com.bill99.pattern.Gamer game = new com.bill99.pattern.Gamer();
game.setState(0);
game.run();
game.setState(1);
game.run();
game.setState(2);
game.run();
System.out.println("---------------------");
//使用状态设计模式
//正常状态下跑
Gamer gamer = new Gamer();
gamer.run();
//生病状态下跑
int condtion=0
if(condtion==0)
{
gamer.setState(new MalumState());
gamer.run();
}
//兴奋状态下跑
else if(condition==1)
{
gamer.setState(new ExcitedState());
gamer.run();
}
}
我々はまだ条件TUが状態を取得し判断する必要があるので、私はドン「状態パターン」を考えていませんが を削除することができます}これは、ここで