`
lichaozhangobj
  • 浏览: 100847 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

状态设计模式

阅读更多

状态模式允许一个对象在其内部状态改变的时候改变其行为。他把所研究的对象的行为包装在不同的状态对象里,每一个状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变。

/**
 * 环境角色
 */
public class Context {

    private State state;

    public void setState(State state) {
        this.state = state;
    }

    public void sampleOperation() {
        state.sampleOperation();
    }
}

 

/**
 * 抽象状态角色
 */
public interface State {
    public void sampleOperation();
}

 

/**
 * 具体状态角色
 */
public class ConcreteState1 implements State{

    public void sampleOperation() {
        System.out.println("ConcreteState1");
    }
}

 

/**
 * 具体状态角色
 */
public class ConcreteState2 implements State {
    public void sampleOperation() {
        System.out.println("ConcreteState2");
    }
}

 

public class Client {

    public static void main(String[] args) {
        Context context = new Context();
        ConcreteState1 concreteState1 = new ConcreteState1();
        ConcreteState2 concreteState2 = new ConcreteState2();

        context.setState(concreteState1);
        context.sampleOperation();

        context.setState(concreteState2);
        context.sampleOperation();
    }
}

 

状态模式和策略模式的区别:

一个简单的方法就是考察环境角色是否有明显的状态和状态过滤。如果环境只有一个状态,那么就应当使用策略模式。

而状态模式则适用于另一种情况,即环境角色有明显的转移。

另一个是策略模式的环境类自己选择一个具体策略类,而状态模式的环境类是被外在原因放在一个具体状态中。

分享到:
评论

相关推荐

    设计模式的状态模式的例子

    状态模式是一种行为设计模式,它允许对象在其内部状态改变时改变其行为,使得对象看起来好像修改了它的类。这种模式通常用于当一个对象的行为取决于它的状态,并且它必须在运行时根据状态改变来改变其行为时。在这个...

    python设计模式第2版.pdf

    设计模式是构建大型软件系统zui强大的方法之一,优化软件架构和设计...全书囊括单例设计模式、工厂模式、门面模式、代理模式、观察者模式、命令模式、模板方法模式、复合模式、状态设计模式以及反模式等多种设计模式。

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

    状态模式是一种行为设计模式,它允许对象在内部状态改变时改变其行为,对象看起来似乎修改了它的类。这种模式常用于处理对象的状态变化,并且在不同的状态下,对象的行为也相应地变化。在Java中,我们可以利用接口、...

    设计模式之状态模式(State)

    状态模式是一种行为设计模式,它使对象能够在内部状态改变时改变其行为,看起来好像改变了它的类。这种模式常用于处理对象在不同状态下表现各异的情况,避免了复杂的条件语句,提高了代码的可读性和可维护性。 在...

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

    状态模式是一种行为设计模式,它使你能在运行时改变对象的行为。在状态模式中,一个对象的状态变化会导致其行为的变化。这种模式常用于处理具有多种状态的对象,且不同状态下对象的行为差异较大。通过将每种状态封装...

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

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

    php设计模式案例详解

    8. **状态设计模式**:允许对象在其内部状态改变时改变它的行为,对象看起来好像修改了它的类。 9. **中介者设计模式**:用一个中介对象来封装一系列的对象交互,降低对象之间的耦合度。 10. **职责链设计模式**:...

    java 设计模式之状态模式

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

    ActionScript 3.0设计模式扫描版_方红琴译

    状态设计模式用到的主要(30P概念 最小抽象状态设计模式 视频播放器具体状态应用程序 扩展状态设计:添加状态 添加更多的状态和流媒体播放能力 小结 第11章 策略模式 什么是策略模式? 策略模式使用的主要OOP...

    Android编程设计模式之状态模式详解

    状态模式在Android编程中是一种非常重要的设计模式,它主要用于处理对象在不同状态下的不同行为。状态模式的核心思想是将每一种状态封装成一个类,使得对象可以在运行时根据其内部状态的变化来改变其行为。 一、...

    设计模式C++学习之状态模式(State)

    状态模式是一种行为设计模式,它允许对象在内部状态改变时改变其行为,对象看起来似乎修改了它的类。这种模式常用于处理对象的状态变化,并且使代码结构清晰,易于维护。 在C++中,状态模式通常包含以下几个关键...

    设计模式之状态模式

    这份文件讲诉了设计模式之状态模式,是以例子的形式进行讲诉的,希望可以帮助学习的人!

    Learning+PHP设计模式

    通过学习如何在代码中使用...第10章 状态设计模式 第5部分 MySQL和PHP设计模式 第11章 通用类负责连接,代理模式保证安全 第12章 策略设计模式的灵活性 第13章 职责链设计模式 第14章 利用观察者模式构建多设备CMS

    设计模式:状态模式TCPConnection案例

    状态模式是一种行为设计模式,它使你能在运行时改变对象的行为。在TCP连接中,状态模式的应用尤为常见,因为TCP连接在不同的阶段会有不同的行为,比如建立连接、数据传输、断开连接等。下面我们将详细探讨这个模式...

    状态设计模式:CPSC 600状态模式存储库

    状态设计模式是面向对象设计中的一种行为模式,它允许对象在内部状态改变时改变其行为。这个模式将对象的行为和状态解耦,使得对象的状态变化更加灵活且易于管理。在这个"CPSC 600状态模式存储库"中,我们可以预见到...

    55-Java设计模式之策略模式与状态模式1

    Java 设计模式之策略模式与状态模式 策略模式是 Java 中的一种设计模式,它主要用于解决系统与第三方接口进行数据交互的问题。当系统需要与多种格式的数据进行交互时,使用策略模式可以很好地解决这个问题。例如,...

    java-设计模式-状态模式-模拟审批流程-二级审批 完整代码

    状态模式是一种行为设计模式,它允许对象在内部状态改变时改变其行为,对象看起来似乎修改了它的类。在这个示例中,我们关注的是如何使用Java实现一个审批流程,特别是涉及二级审批的场景。这个压缩包文件包含了一个...

    24种设计模式以及混合设计模式

    设计模式是软件工程中的一种重要思想,它是在特定情境下,为解决常见问题而形成的一套最佳实践。在本文中,我们将深入探讨24种设计模式,并结合混合设计模式的概念,以及它们在实际项目中的应用案例。 首先,设计...

    设计模式-状态模式分享ppt

    ### 设计模式之状态模式详解 #### 一、设计模式概述 设计模式是软件工程领域的一种最佳实践,它提供了一套解决特定问题的通用方案。根据功能的不同,设计模式大致可以分为三大类:创建型模式、结构型模式以及行为型...

Global site tag (gtag.js) - Google Analytics