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

State状态模式

阅读更多

参考于下面的链接:
http://www.jdon.com/designpatterns/designpattern_State.htm
http://blog.csdn.net/qutr/archive/2006/08/01/1007617.aspx

State模式的定义 : 不同的状态,不同的行为;或者说,每个状态有着相应的行为.

何时使用  State模式在实际使用中比较多,适合"状态的切换".

来段代码:

//先来一个状态:
package State;

public abstract class State
{
    
    /** *//** Creates a new instance of State */
    public State() {
    }
    
    public abstract void opration(Context context);
}//end class State

//在来两个具体的State:
public class ConcreteStateA extends State
{
    
    /** *//** Creates a new instance of ConcreteStateA */
    public ConcreteStateA() {
    }

    public void opration(Context context)
    {
        System.out.println("The Concrete A");
        context.setSate(new ConcreteStateB());
    }//end opration()
    
    public static ConcreteStateA getInstance()
    {
        return new ConcreteStateA();
    }//end getInstance()
}

public class ConcreteStateB extends State
{
    
    /** *//** Creates a new instance of ConcreteStateB */
    public ConcreteStateB() {
    }

    public void opration(Context context)
    {
        System.out.println("The Concrete B");
        context.setSate(new ConcreteStateA());
    }//end opration()
    
    public static ConcreteStateB getInstance()
    {
        return new ConcreteStateB();
    }//end getInstance()
    
}//end class ConcreteStateB

//来一个场景:
public class Context
{
    private State state;
    /** *//** Creates a new instance of Context */
    public Context() {
    }
    
    public void setSate(State stat)
    {
        state = stat;
    }//end setState()
    
    public void operation()
    {
        state.opration(this);
    }//end operation()
    
}//end class Context

//怎样调用:
public static void main(String[] args)
{
		Context con = new Context();
		con.setSate(ConcreteStateA.getInstance());
		con.operation();
		con.operation();
}//end main()
 

以上代码摘自上面介绍的blog中,不过有部分改动。下面是UML图 也是盗链的。。。。。

State模式

分享到:
评论
4 楼 dafei2599 2008-05-13  
学习!
却是不知道应该如何应用!
3 楼 aninfeel 2008-05-07  
和某个好像叫fly的模式很像啊,就是执行者不保存状态,也不是做真正的执行,而是只是调用某个对象(相当于现在的state)的某个方法。
2 楼 smartwgd 2008-05-07  
现在只是学习,而工作中 还没有应用到 呵呵。努力努力
1 楼 coolzyt 2008-05-07  
状态模式常用于编译器中,构造有限状态机

相关推荐

    C#面向对象设计模式纵横谈(22):(行为型模式) State 状态模式

    标题和描述均提到了"C#面向对象设计模式"中的State状态模式,这表明文章的核心内容是围绕State模式在C#编程语言中的应用展开。State模式是一种行为设计模式,旨在允许对象在其内部状态改变时,其行为也能相应地改变...

    haoyGo#weekly-1#186.精读《设计模式 - State 状态模式》1

    重点在 “内部状态” 的理解,也就是状态改变是由对象内部触发的,而不是外部,所以 外部根本无需关心对象是否用了状态模式,拿数据库连接器的例子来说,不管这个类是用

    详解state状态模式及在C++设计模式编程中的使用实例

    主要介绍了state状态模式及在C++设计模式编程中的使用实例,在设计模式中策略用来处理算法变化,而状态则是透明地处理状态变化,需要的朋友可以参考下

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

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

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

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

    状态模式 State Pattern

    ### 状态模式(State Pattern) #### 概念与定义 状态模式是一种行为设计模式,它允许对象在其内部状态改变时改变其行为,使对象看起来像是修改了它的类。该模式通过引入一个代表各种状态的类以及一个行为随着这些...

    设计模式之状态模式State

    状态模式通常包含三个主要角色:Context(上下文)、State(抽象状态)和ConcreteState(具体状态)。 上下文是拥有状态的对象,它定义了与该状态相关的接口,并负责在适当的时候将请求委托给相应的状态对象处理。...

    实例讲解C++设计模式编程中State状态模式的运用场景

    在给出的实例中,`Context`类是状态模式的核心,它定义了所有可能的状态行为,并持有当前状态对象的引用。`Context`类有两个主要的方法:`Handle()`和`OperationForStateA()`以及`OperationForStateB()`。`Handle()`...

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

    状态模式是一种行为设计模式,它使你能在运行时改变对象的行为。在状态模式中,一个对象的状态变化会导致其行为的变化,这种变化不是通过改变对象的类来实现的,而是通过改变对象的状态。这个模式的核心是封装可能...

    iOS App的设计模式开发中对State状态模式的运用

    状态模式是一种设计模式,它允许对象在内部状态改变时改变其行为,使对象看起来似乎修改了它的类。在iOS App的开发中,特别是在Objective-C环境下,状态模式可以帮助开发者更好地管理对象的状态并根据状态执行相应的...

    设计模式State模式源码

    State模式在实际使用中比较多,适合"状态的切换".因为我们经常会使用If elseif else 进行状态切换, 如果针对状态的这样判断切换反复出现,我们就要联想到是否可以采取State模式了. 不只是根据状态,也有根据属性.如果...

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

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

    c++状态模式

    状态模式是一种行为设计模式,它允许对象在内部状态改变时改变其行为,对象看起来似乎修改了它的类。在C++中,状态模式通常通过定义一系列的类来表示各种状态,并用一个上下文类来管理这些状态的切换。下面将详细...

    轻松掌握state设计模式

    3. **复杂度考量**:虽然State模式能够清晰地表示状态转换,但如果状态较少且转换逻辑简单,则可能不需要使用State模式,因为引入额外的类可能会增加不必要的复杂度。 #### 四、State模式的实例解析 本节将以自动...

    JackChan1999#Java-Degisn-Patterns#状态模式-State Pattern1

    状态模式-State Pattern状态模式-State Pattern【学习难度:,使用频率:】状态模式-State Pattern处理对象的多种状态及其相互

    Android的状态机模式StateMachine与State

    状态机模式(StateMachine)在Android开发中是一种常用的设计模式,特别是在处理复杂的系统行为时,它可以帮助我们更好地组织代码,使其更具有可读性和可维护性。Android的状态机模式主要涉及两个核心概念:State...

    设计模式 - 状态模式(C++实例)

    在C++中实现状态模式,我们通常会定义一个抽象状态类(State),它声明了所有可能的状态行为。然后,创建一系列具体状态类(ConcreteState)来实现这些行为。每个具体状态类代表一种特定的状态,并且在内部维护当前...

    C++设计模式课件18_State_状态模式.pdf

    ### C++设计模式之状态模式解析 #### 一、引言 在软件开发过程中,对象的行为往往会根据其内部状态的变化而变化。为了更好地管理和控制这些行为的变化,设计模式中的“状态模式”应运而生。状态模式允许一个对象在...

    java 设计模式之状态模式

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

Global site tag (gtag.js) - Google Analytics