JAVA设计模式十二--State(状态模式)
来源:互联网 发布:纪录片《国殇》知乎 编辑:程序博客网 时间:2024/05/15 15:44
状态模式(State Pattern)是设计模式的一种,属于行为模式。
定义(源于Design Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。
状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态
的一系列类中,可以把复杂的判断逻辑简化。
意图:
允许一个对象在其内部状态改变时改变它的行为
适用场景:
1.一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。
定义(源于Design Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。
状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态
的一系列类中,可以把复杂的判断逻辑简化。
意图:
允许一个对象在其内部状态改变时改变它的行为
适用场景:
1.一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。
2.一个操作中含有庞大的多分支结构,并且这些分支决定于对象的状态。
如图:
举例说明:
package design.state;/** * 文件名称:design.state.Step.java * 创建人:Fei Wong * 创建时间: 2012-06-21 * 电子邮箱:feiwong8@126.com * 说明:枚举,说明有几个状态 * */public enum Step {/** * 模拟审核的状态, 未审核 审核中 通过审核 未通过审核 * */UNAUDITED , AUDIT , PASS , NOT_PASS} package design.state;/** * 文件名称:design.state.Examine.java * 创建人:Fei Wong * 创建时间: 2012-06-21 * 电子邮箱:feiwong8@126.com * 说明:判断逻辑 */public class Examine {private Step step;public Examine() {step = Step.UNAUDITED ; }public void push(int status) {switch (status) {case 1:if(step == Step.UNAUDITED){step = Step.AUDIT ;}else if(step == Step.AUDIT ){step = Step.PASS ;}else if(step == Step.NOT_PASS){System.out.println( "审核已经被否决" );}else if(step == Step.PASS){System.out.println( "审核已经通过" );}break ;case 0: step = Step.NOT_PASS ; break ;}}}package design.state;/** * 文件名称:design.state.Main.java * 创建人:Fei Wong * 创建时间: 2012-06-21 * 电子邮箱:feiwong8@126.com * 说明:测试方法 * */public class Main {/** * @param args */public static void main(String[] args) {Examine examine = new Examine() ;examine.push( 1 ) ;examine.push( 0 ) ;examine.push( 1 ) ; }}
- JAVA设计模式十二--State(状态模式)
- JAVA设计模式十二:--State(状态模式)
- 设计模式之十二:状态模式(State)
- [设计模式](十二):备忘录模式(Memento)|状态模式(State)
- 设计模式学习笔记二十二(State状态模式)
- 设计模式之(十二、状态模式State)
- 设计模式实现(十二)--- 状态模式(State)
- Java设计模式之State(状态模式)
- java设计模式-状态模式(STATE)
- java设计模式之状态 模式State
- java设计模式-状态模式(State)
- JAVA设计模式—状态模式(State)
- Java设计模式九:状态模式(State)
- Java设计模式----状态模式(State)
- Java设计模式 状态模式(State)
- java设计模式:状态模式 State
- java设计模式-状态模式State
- java设计模式--状态模式 State
- JNI学习之---用jni API 访问java对象的属性,方法,调用构造器。
- 验证输入的内容中的括号是否配对
- 编程注意点:写给自己的
- 风谷の思念
- Fedora 15/16 安装后需要做的28件事
- JAVA设计模式十二--State(状态模式)
- 人人都是产品经理。到200页记录。
- oracle习题带答案
- .NET 插件系统框架设计(一)框架整体构想
- 文件同步系统 DRBD
- 2012年6月21日记--主题迷茫
- 类型转换&&类型强制转换
- .NET 插件系统框架设计(二) 使用对象序列化实现自定义配置文件管理
- Stanford 算法入门 week1 algorithm for closest pair