这时我们需要一个环境类,默认:这个运动员的状态是正常状态
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(); } }
这就是状态模式。你可以自己动手试试,动手可以加深理解的印象。
感谢您的阅读,希望对您有帮助,本文版权归 #惊讶# 所有