首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java state形式

2012-12-25 
java state模式1.静态主调函数package compublic class Test {public static void main(String[] args){S

java state模式

1.静态主调函数package com;public class Test {  public static void main(String[] args){   State state = new StateA();StateManager sm = new StateManager(state);for(int i=0;i<4;i++){state = sm.nextState();System.out.print(":"+state);if(state == null){System.out.print("-->");}sm.nextStep();}}}2.State接口类package com;public interface State{public void lastStep(StateManager s);public void nextStep(StateManager s);}3.状态管理类package com;public class StateManager {private State state;public StateManager(State initState){this.state = initState;}public void setState(State state){this.state = state;}//下一步public void nextStep(){if(this.state != null)this.state.nextStep(this);}//上一步public void lastStep(){if(this.state != null)this.state.lastStep(this);}//返回下一个状态public State nextState(){return this.state;}}4.状态类package com;public class StateA implements State{public void lastStep(StateManager s){s.setState(new StateC());}public void nextStep(StateManager s){    s.setState(new StateB());}public String toString() {return "State A";}}package com;public class StateB implements State{public void lastStep(StateManager s){s.setState(new StateA());}public void nextStep(StateManager s){s.setState(new StateC());}   public String toString(){return "State B";}}package com;public class StateC implements State{public void lastStep(StateManager s) {  s.setState(new StateB());}public void nextStep(StateManager s){s.setState(new StateA());}public String toString() {return "State C";}}

? 4. 总结:

??? (1) 采用interface实现多继承,加入管理类,方便状态切换

??? (2)应用场景:

??????? ?1、不同的状态(可能会对应相应的行为),

???????? 2、不同的行为;? 间反复进行切换,则应优先考虑状态模式。?

热点排行