状态模式
来源:互联网 发布:醉八仙宠物技能数据库 编辑:程序博客网 时间:2024/06/06 02:10
状态模式:允许在其内部状态变化的时候改变他的行为。可以理解为对象的行为其实是由他的状态来驱动的。
package com.jerry.design.state;// 测试类public class Test {public static void main(String[] args) {State state = new StateA(); StateManager controller = new StateManager(state); for (int i = 0; i < 10; i++) { state = controller.nextState(); System.out.print(state); if(state == null) break; System.out.print("->"); controller.nextStep();}}} interface State { public void lastState(StateManager c); public void nextState(StateManager c); }class StateA implements State { public void lastState(StateManager c) { c.setState(new StateC()); } public void nextState(StateManager c) { c.setState(new StateB()); } @Override public String toString() { return "i am StateA!"; }}class StateB implements State { public void lastState(StateManager c) { c.setState(new StateA()); } public void nextState(StateManager c) { c.setState(new StateC()); } @Override public String toString() { return "i am StateB!"; }}class StateC implements State { public void lastState(StateManager c) { c.setState(new StateB()); } public void nextState(StateManager c) { c.setState(new StateA()); } @Override public String toString() { return "i am StateC!"; }}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.nextState(this); } public void lastStep(){ if(this.state != null) this.state.lastState(this); } public State nextState(){ return this.state; }}
这个例子的难点其实是这个状态管理器,其中用一个State对象维护了当前状态和下一个状态,通过设置这个state对象的不同状态来获得不同的state的方法调用。
- 状态模式(状态变化)
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- phonegap入门(二)-使用html5API存储信息到本地
- 编程创建明细表(2013 新API用法)
- Objective-C属性介绍
- 编译linux内核步骤
- 关于C/C++与汇编的混合编程
- 状态模式
- sas时间序列试验指导(含程序)
- [SQL-码农]内查询
- VS中的C#的wpf中的数据如何导入到excel表中,跪求!
- spring在web.xml中的配置
- Vim改变窗口大小
- CoClass(即COM接口类),实例化模式和线程模型
- 设计模式 ( 二十 ) 访问者模式Visitor(对象行为型)
- http://www.microsoft.com/en-us/download/details.aspx?id=2391