这时我们需要一个环境类,默认:这个运动员的状态是正常状态
public class Player {
//正常发挥
private State state = new NormalState();
/**
* 设置投篮的状态
* @param state
*/
public void setState(State state){
this.state = state;
}
public void shot(){
// TODO Auto-generated method stub
state.shot();
}
}
然后我们需要给运动员的投篮手感状态定义一个接口,然后让各种投篮手感状态去实现这个接口。
public interface State {
/**
* 公用的投篮结果方法
*/
public abstract void shot();
}
接下来我们就需要定义各种状态类了,这里我定义了3种状态,我只列举其中的一种了
/**
* 投篮超常的状态
* @auth jing.yue
* @version 1.0
* @date 2012-07-4
*/
public class SuperState implements State {
@Override
public void shot() {
System.out.println("今天你投篮十中十");
}
}
最后一步就是投篮的测试类了,如果我们不指定状态,则默认为正常状态[投篮10中5]。我们还可以调用setState方法将运动员今天投篮的状态设置进去,然后调用shot方法来查看投篮的结果。
/**
* 投篮状态测试类
* @auth jing.yue
* @version 1.0
* @date 2012-07-4
*/
public class TestState {
/**
* 状态模式用来处理条件判断等
* @param args
*/
public static void main(String[] args) {
Player player = new Player();
//正常下投篮
player.shot();
//不正常下投篮
player.setState(new NonormalState());
player.shot();
//超常下投篮
player.setState(new SuperState());
player.shot();
}
}
这就是状态模式。你可以自己动手试试,动手可以加深理解的印象。
感谢您的阅读,希望对您有帮助,本文版权归 #惊讶# 所有