状态模式(State Pattern)是对象行为模式的一种;它的意图是:允许一个对象在其内部状态改变的时改变它的行为。
主要角色有:
context(环境),State(抽象的状态角色),ConcreteState(真实的状态角色)
状态模式使用的场景:
- 一个对象的行为依赖于它所处于的状态,对象的行为必须随着其状态的改变而改变
- 对象在某个方法中依赖于一重或多重的条件转移语句,其中有大量的代码。状态模式把条件转移语句你的每一个分支都包装到一个独立的类中。使得这些条件转移语句能够以类的形式独立的存在和演进。
交通灯的状态有:红灯,黄灯和绿灯。
交通灯的状态是会改变的,所以抽象的状态有一个操作就是改变状态
/** * 状态机的接口 * @author zhangwei_david * @version $Id: RedState.java, v 0.1 2015年1月12日 下午8:34:04 zhangwei_david Exp $ */ public interface State { /** * 装填的装换 * * @return */ public State change(); }
/** *交通灯的状态机 * @author zhangwei_david * @version $Id: ColorState.java, v 0.1 2015年1月12日 下午8:35:55 zhangwei_david Exp $ */ public enum TrafficLightState implements State { RED { /** * @see com.cathy.demo.enumDemo.TrafficLightState#change() */ @Override public State change() { // 红灯转换为绿灯 return GREEN; } }, GREEN { /** * @see com.cathy.demo.enumDemo.TrafficLightState#change() */ @Override public State change() { // 绿灯转换为黄灯 return YELLOW; } }, YELLOW { /** * @see com.cathy.demo.enumDemo.TrafficLightState#change() */ @Override public State change() { // 黄灯转换为红灯 return RED; } }; /** * @see com.cathy.demo.enumDemo.State#change() */ public abstract State change(); }
/** * * @author zhangwei_david * @version $Id: Client.java, v 0.1 2015年1月12日 下午8:48:51 zhangwei_david Exp $ */ public class Client { /** * * @param args */ public static void main(String[] args) { State state = TrafficLightState.GREEN; state = state.change(); System.out.println(state); state = state.change(); System.out.println(state); state = state.change(); System.out.println(state); state = state.change(); System.out.println(state); state = state.change(); System.out.println(state); } } 结果是: YELLOW RED GREEN YELLOW RED
相关推荐
状态模式是一种行为设计模式,它允许对象在内部状态改变时改变其行为,对象看起来似乎修改了它的类。在这个示例中,我们关注的是如何使用Java实现一个审批流程,特别是涉及二级审批的场景。这个压缩包文件包含了一个...
状态模式是一种行为设计模式,它允许对象在内部状态改变时改变其行为,看起来好像对象改变了它的类。在Java中,状态模式通常通过定义不同的状态类和一个上下文类来实现,其中上下文类持有状态对象并调用其方法来响应...
根据给定文件内容,以下是关于Java设计模式的知识点说明: 1. 策略模式(Strategy Pattern)是一种行为设计模式,允许在运行时选择算法的行为。策略模式的意图是定义一系列算法,将每个算法封装起来,并使它们可以...
状态模式是一种行为设计模式,它允许对象在内部状态改变时改变其行为,对象看起来似乎修改了它的类。在Java中,这种模式常用于处理对象在不同状态下的多种行为,使得代码更加灵活,易于维护和扩展。 状态模式的核心...
在Java设计模式中,状态模式的核心概念包括以下几个部分: 1. **状态(State)**:这是个接口或抽象类,定义了状态对象的公共行为。每个状态都对应一个特定的操作集,这些操作可能会影响对象的状态。 2. **具体...
包括责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、中介者模式(Mediator)、备忘录模式(Memento)、观察者模式(Observer)、状态模式...
今天,我们将讨论两种常用的Java设计模式:状态模式和模板模式。 状态模式(State Pattern) --------------------- 状态模式是一种行为型设计模式,它允许对象在内部状态改变时改变它的行为。状态模式将状态封装...
**Java设计模式——备忘录模式详解** 备忘录模式是一种行为设计模式,它允许对象在不破坏封装性的前提下捕获并存储其内部状态,以便稍后恢复到该状态。这种模式常用于在游戏中保存进度、撤销/重做操作、以及在复杂...
8. 状态模式(State):允许对象在其内部状态改变时改变其行为。 9. 策略模式(Strategy):定义一系列算法,并将每个算法封装起来,使它们可以相互替换。 10. 模板方法模式(Template Method):定义一个操作中的...
Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决问题的经验总结,可以提高代码的可读性、可维护性和可扩展性。本压缩包包含的源代码涵盖了多个经典的设计模式,接下来将对这些模式进行详细介绍。 1....
Java设计模式中的备忘录模式(Memento Pattern)是一种用于保存对象状态的模式,以便在未来某一时刻能够恢复到之前的状态。这种模式的核心在于在不违反对象封装性的前提下,捕获对象的内部状态并将其存储起来。备忘...
总之,备忘录模式是一种有效的设计模式,它提供了在不破坏封装性的前提下,安全地保存和恢复对象状态的手段。在JAVA编程中,通过合理运用备忘录模式,可以提高代码的可维护性和可扩展性,同时增强系统的功能。
《Java设计模式》是刘伟教授的一本关于设计模式的教材,主要面向高等学校的学生和对Java编程有深入兴趣的开发者。设计模式是软件工程中的一种重要思想,它封装了在特定场景下的问题解决方案,可以提高代码的可读性、...
在《设计模式》实战---状态模式(State Pattern)这篇文章中,作者可能详细探讨了以下关键点: 1. **模式定义**:状态模式允许对象在内部状态改变时改变其行为,对象看起来好像修改了它的类。这通过将每个状态封装...
状态模式(State Pattern)是一种行为设计模式,它允许对象在其内部状态改变时改变其行为,从而使对象看起来像改变了其类。这种模式的主要目的是将对象的状态作为独立的类来管理,从而简化了条件逻辑并提高了代码的...
Java设计模式是软件工程中的一种最佳实践,它提供了一种在特定情况下解决常见问题的标准化方法。设计模式不是具体的代码或库,而是一种通用解决方案的描述,可以应用于各种编程语言,包括Java。在这个名为"JAVA ...
状态模式是一种行为设计模式,它允许对象在内部状态改变时改变其行为,对象看起来似乎修改了它的类。这种模式常用于处理对象的状态变化,并且在不同的状态下,对象的行为也相应地变化。 状态模式的主要组件包括: 1...
Java设计模式是软件工程中的一种最佳实践,它总结了在特定场景下解决常见问题的经验,为程序员提供了可重用的解决方案。本资料“《java设计模式》课后习题模拟试题解答——刘伟.zip”主要涵盖了Java设计模式的学习与...
17. **状态模式(State Pattern)**:允许对象在其内部状态改变时改变其行为,对象看起来似乎改变了它的类。 18. **访问者模式(Visitor Pattern)**:在不改变类的前提下,增加新的操作行为,使得访问者可以作用于...