java设计模式---状态模式
2013-07-24 09:58
381 查看
Java深入到一定程度,就不可避免的碰到设计模式这一概念,了解设计模式,将使自己对java中的接口或抽象类应用有更深的理解.设计模式在java的中型系统中应用广泛,遵循一定的编程模式,才能使自己的代码便于理解,易于交流,State(状态)模式是比较常用的一个模式.
应用场景:如果需要在 1、不同的状态(可能会对应相应的行为), 2、不同的行为; 间反复进行切换,则应优先考虑状态模式。
在此写了7个java类来描述说明State设计模式;
1、State.java 状态接口
2、StateA.java 状态A
3、StateB.java 状态B 4、StateC.java 状态C
5、StateD.java 状态D
6、StateManager.java 状态管理类 7、StateTest.java 带有main方法的测试类
应用场景:如果需要在 1、不同的状态(可能会对应相应的行为), 2、不同的行为; 间反复进行切换,则应优先考虑状态模式。
在此写了7个java类来描述说明State设计模式;
1、State.java 状态接口
2、StateA.java 状态A
3、StateB.java 状态B 4、StateC.java 状态C
5、StateD.java 状态D
6、StateManager.java 状态管理类 7、StateTest.java 带有main方法的测试类
=============== 1、State.java 状态接口 public interface State { //执行'上一步' 操作 public void lastStep(StateManager c); //执行'下一步' 操作 public void nextStep(StateManager c); } =============== 1 end =============== 2、StateA.java 状态A public class StateA implements State { //A->C public void lastStep(StateManager c) { // TODO Auto-generated method stub c.setState(new StateC()); } //A->B public void nextStep(StateManager c) { // TODO Auto-generated method stub c.setState(new StateB()); } @Override public String toString() { // TODO Auto-generated method stub return "State A"; } } =============== 2 end =============== 3、StateB.java 状态B public class StateB implements State { //B->A public void lastStep(StateManager c) { // TODO Auto-generated method stub c.setState(new StateA()); } //B->C public void nextStep(StateManager c) { // TODO Auto-generated method stub c.setState(new StateC()); } @Override public String toString() { // TODO Auto-generated method stub return "State B"; } } =============== 3 end =============== 4、StateC.java 状态C public class StateC implements State { //C->null(end) public void lastStep(StateManager c) { // TODO Auto-generated method stub c.setState(null); } //C->D public void nextStep(StateManager c) { // TODO Auto-generated method stub c.setState(new StateD()); } @Override public String toString() { // TODO Auto-generated method stub return "State C"; } } =============== 4 end =============== 5、StateD.java 状态D public class StateD implements State { //D->B public void lastStep(StateManager c) { // TODO Auto-generated method stub c.setState(new StateB()); } //D->nlll(end) public void nextStep(StateManager c) { // TODO Auto-generated method stub c.setState(null); } @Override public String toString() { // TODO Auto-generated method stub return "State D"; } } =============== 5 end =============== 6、StateManager.java 状态管理类 public class StateManager { //状态 private State state; //没有状态的构造器(不可见) private StateManager(){} //带有初始状态的构造器 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; } } =============== 6 end
=============== 7、StateTest.java 状态测试类 public class StateTest { public static void main(String[] args) { // TODO Auto-generated method stub //顺行起点A State state = new StateA(); StateManager controller = new StateManager(state); for (int i = 0; i < 6; i++) { state = controller.nextState(); System.out.print(state); if(state == null) break; System.out.print("->"); //顺流 controller.nextStep(); } System.out.println(""); //顺行起点D State converseState = new StateD(); controller = new StateManager(converseState); for (int i = 0; i < 6; i++) { state = controller.nextState(); System.out.print(state); if(state == null) break; System.out.print("->"); //逆流 controller.lastStep(); } } } =============== 7 end
相关文章推荐
- Java设计模式之状态模式
- java设计模式-状态模式(State)
- JAVA-状态设计模式
- java设计模式-状态模式
- JAVA设计模式之状态模式
- 【JAVA】设计模式之状态模式(State模式)的使用分析
- java设计模式之状态模式
- Java设计模式之从[游戏中的兵种状态转换]分析状态(State)模式
- 黑马程序员--读写字节数组,随机读写流,集合IO的思维导图,多线程部分,单例设计模式,线程和进程的概念,Java中的线程的创建方式,线程的随机性,线程的状态图,多线程操作共享数据的安全性,死锁
- java/android 设计模式学习笔记(19)---状态模式
- Java设计模式之状态模式
- Java设计模式_创建型_原型模式_复制对象及状态
- java 设计模式 状态模式
- JAVA 设计模式 状态模式
- 个人笔记整理-java设计模式之状态模式
- Java 23种设计模式之状态模式
- 设计模式--行为模式--状态模式--Java
- java设计模式(十二)---状态模式
- java设计模式(八)状态模式
- Java设计模式--状态模式