`
zhangwei_david
  • 浏览: 476125 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java 设计模式-状态模式模式(State)

 
阅读更多

   状态模式(State Pattern)是对象行为模式的一种;它的意图是:允许一个对象在其内部状态改变的时改变它的行为。

    主要角色有:

      context(环境),State(抽象的状态角色),ConcreteState(真实的状态角色)

 状态模式使用的场景:

  1.   一个对象的行为依赖于它所处于的状态,对象的行为必须随着其状态的改变而改变
  2. 对象在某个方法中依赖于一重或多重的条件转移语句,其中有大量的代码。状态模式把条件转移语句你的每一个分支都包装到一个独立的类中。使得这些条件转移语句能够以类的形式独立的存在和演进。

 

交通灯的状态有:红灯,黄灯和绿灯。
交通灯的状态是会改变的,所以抽象的状态有一个操作就是改变状态

 

/**
 * 状态机的接口
 * @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 设计模式之状态模式

    状态模式是一种行为设计模式,它允许对象在内部状态改变时改变其行为,看起来好像对象改变了它的类。在Java中,状态模式通常通过定义不同的状态类和一个上下文类来实现,其中上下文类持有状态对象并调用其方法来响应...

    java设计模式---诙谐易懂版

    根据给定文件内容,以下是关于Java设计模式的知识点说明: 1. 策略模式(Strategy Pattern)是一种行为设计模式,允许在运行时选择算法的行为。策略模式的意图是定义一系列算法,将每个算法封装起来,并使它们可以...

    java设计模式-状态

    状态模式是一种行为设计模式,它允许对象在内部状态改变时改变其行为,对象看起来似乎修改了它的类。在Java中,这种模式常用于处理对象在不同状态下的多种行为,使得代码更加灵活,易于维护和扩展。 状态模式的核心...

    java设计模式之-状态模式-实现

    在Java设计模式中,状态模式的核心概念包括以下几个部分: 1. **状态(State)**:这是个接口或抽象类,定义了状态对象的公共行为。每个状态都对应一个特定的操作集,这些操作可能会影响对象的状态。 2. **具体...

    JAVA设计模式-chm版

    包括责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、中介者模式(Mediator)、备忘录模式(Memento)、观察者模式(Observer)、状态模式...

    java常用设计模式-状态模式

    今天,我们将讨论两种常用的Java设计模式:状态模式和模板模式。 状态模式(State Pattern) --------------------- 状态模式是一种行为型设计模式,它允许对象在内部状态改变时改变它的行为。状态模式将状态封装...

    Java设计模式-备忘录

    **Java设计模式——备忘录模式详解** 备忘录模式是一种行为设计模式,它允许对象在不破坏封装性的前提下捕获并存储其内部状态,以便稍后恢复到该状态。这种模式常用于在游戏中保存进度、撤销/重做操作、以及在复杂...

    JAVA设计模式--入门

    8. 状态模式(State):允许对象在其内部状态改变时改变其行为。 9. 策略模式(Strategy):定义一系列算法,并将每个算法封装起来,使它们可以相互替换。 10. 模板方法模式(Template Method):定义一个操作中的...

    java设计模式----源代码

    Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决问题的经验总结,可以提高代码的可读性、可维护性和可扩展性。本压缩包包含的源代码涵盖了多个经典的设计模式,接下来将对这些模式进行详细介绍。 1....

    java设计模式-备忘录模式

    Java设计模式中的备忘录模式(Memento Pattern)是一种用于保存对象状态的模式,以便在未来某一时刻能够恢复到之前的状态。这种模式的核心在于在不违反对象封装性的前提下,捕获对象的内部状态并将其存储起来。备忘...

    JAVA设计模式--备忘录模式.docx

    总之,备忘录模式是一种有效的设计模式,它提供了在不破坏封装性的前提下,安全地保存和恢复对象状态的手段。在JAVA编程中,通过合理运用备忘录模式,可以提高代码的可维护性和可扩展性,同时增强系统的功能。

    《Java设计模式》课后答案-刘伟.rar

    《Java设计模式》是刘伟教授的一本关于设计模式的教材,主要面向高等学校的学生和对Java编程有深入兴趣的开发者。设计模式是软件工程中的一种重要思想,它封装了在特定场景下的问题解决方案,可以提高代码的可读性、...

    《设计模式》实战---状态模式(State Pattern)

    在《设计模式》实战---状态模式(State Pattern)这篇文章中,作者可能详细探讨了以下关键点: 1. **模式定义**:状态模式允许对象在内部状态改变时改变其行为,对象看起来好像修改了它的类。这通过将每个状态封装...

    设计模式-状态模式.pdf

    状态模式(State Pattern)是一种行为设计模式,它允许对象在其内部状态改变时改变其行为,从而使对象看起来像改变了其类。这种模式的主要目的是将对象的状态作为独立的类来管理,从而简化了条件逻辑并提高了代码的...

    JAVA design pattern-java设计模式

    Java设计模式是软件工程中的一种最佳实践,它提供了一种在特定情况下解决常见问题的标准化方法。设计模式不是具体的代码或库,而是一种通用解决方案的描述,可以应用于各种编程语言,包括Java。在这个名为"JAVA ...

    设计模式-状态模式(讲解及其实现代码)

    状态模式是一种行为设计模式,它允许对象在内部状态改变时改变其行为,对象看起来似乎修改了它的类。这种模式常用于处理对象的状态变化,并且在不同的状态下,对象的行为也相应地变化。 状态模式的主要组件包括: 1...

    《java设计模式》课后习题模拟试题解答——刘伟.zip

    Java设计模式是软件工程中的一种最佳实践,它总结了在特定场景下解决常见问题的经验,为程序员提供了可重用的解决方案。本资料“《java设计模式》课后习题模拟试题解答——刘伟.zip”主要涵盖了Java设计模式的学习与...

    java-design-patterns-master_JAVAdesignpattens_java_design_

    17. **状态模式(State Pattern)**:允许对象在其内部状态改变时改变其行为,对象看起来似乎改变了它的类。 18. **访问者模式(Visitor Pattern)**:在不改变类的前提下,增加新的操作行为,使得访问者可以作用于...

Global site tag (gtag.js) - Google Analytics