一,状态模式允许对象在其内部状态改变的时候改变行为,使其看上去就像是改变了他的类一样。
状态模式中的每一个状态可以改变自己内部状态
以心情的状态改变为事例:
package com.wqy.State;
/**
* @author wu_quanyin(09817)
* @version 1.0
* @date 2010-7-16 下午05:57:02
*/
public interface MoodState {
//当前心情
public void currentFeeling();
//改变状态
public void covertMoodState();
}
package com.wqy.State;
/**
* @author wu_quanyin(09817)
* @version 1.0
* @date 2010-7-16 下午05:59:11
*/
public class HappyState implements MoodState {
private Person person;
public HappyState(Person person){
this.person=person;
}
@Override
public void currentFeeling() {
System.out.println("I'm very happy...");
covertMoodState();
}
public void covertMoodState(){
person.setState(new AngryState(person));
}
}
package com.wqy.State;
/**
* @author wu_quanyin(09817)
* @version 1.0
* @date 2010-7-16 下午05:58:11
*/
public class AngryState implements MoodState {
private Person person;
public AngryState(Person person){
this.person=person;
}
public void currentFeeling() {
System.out.println("I'm very angry...");
covertMoodState();
}
public void covertMoodState(){
person.setState(new SadState(person));
}
}
package com.wqy.State;
/**
* @author wu_quanyin(09817)
* @version 1.0
* @date 2010-7-16 下午06:00:09
*/
public class SadState implements MoodState {
private Person person;
public SadState(Person person){
this.person=person;
}
@Override
public void currentFeeling() {
System.out.println("I'm very sadly...");
covertMoodState();
}
public void covertMoodState(){
person.setState(new HappyState(person));
}
}
package com.wqy.State;
/**
* @author wu_quanyin(09817)
* @version 1.0
* @date 2010-7-16 下午06:02:24
*/
public class Person {
private MoodState moodState;
public Person(){
moodState=new HappyState(this);
}
public void setState(MoodState moodState){
this.moodState=moodState;
}
public void currentFeeling(){
moodState.currentFeeling();
}
}
package com.wqy.State;
/**
* @author wu_quanyin(09817)
* @version 1.0
* @date 2010-7-16 下午06:01:36
*/
public class Client {
public static void main(String[] args) {
Person person=new Person();
for(int i=0;i<4;i++){
person.currentFeeling();
}
}
}
打印结果:
I'm very happy...
I'm very angry...
I'm very sadly...
I'm very happy...
使用:
- 大小: 51.2 KB
分享到:
相关推荐
### 状态模式(State Pattern) #### 概念与定义 状态模式是一种行为设计模式,它允许对象在其内部状态改变时改变其行为,使对象看起来像是修改了它的类。该模式通过引入一个代表各种状态的类以及一个行为随着这些...
状态模式通常包含三个主要角色:Context(上下文)、State(抽象状态)和ConcreteState(具体状态)。 上下文是拥有状态的对象,它定义了与该状态相关的接口,并负责在适当的时候将请求委托给相应的状态对象处理。...
2009-03-10模式State:一个事件(消息)引起环境或数据的变化,可能导致状态变化,于是处理流程改变,这里的状态是把处理流程分成了很多阶段,通过状态机来根据传来的事件(消息)引发状态转换,管理状态属性和状态行为,...
状态模式是一种行为设计模式,它允许对象在内部状态改变时改变其行为,对象看起来似乎修改了它的类。这种模式常用于处理对象的状态变化,并且使代码结构清晰,易于维护。 在C++中,状态模式通常包含以下几个关键...
状态模式是一种行为设计模式,它使对象能够在内部状态改变时改变其行为,看起来好像改变了它的类。这种模式常用于处理对象在不同状态下表现各异的情况,避免了复杂的条件语句,提高了代码的可读性和可维护性。 在...
在博文《Android的状态机模式StateMachine与State》中,作者可能会详细介绍如何创建和使用这两种组件。通常,状态机的实现会涉及到以下步骤: 1. **定义状态接口或抽象类**:创建一个State接口或抽象类,其中包含...
状态模式是一种行为设计模式,它使你能在运行时改变对象的行为。在状态模式中,一个对象的状态变化会导致其行为的变化,这种变化不是通过改变对象的类来实现的,而是通过改变对象的状态。这个模式的核心是封装可能...
状态模式是一种行为设计模式,它允许对象在内部状态改变时改变其行为,对象看起来似乎修改了它的类。这种模式常用于处理对象的状态变化,并且根据不同的状态,对象的行为也相应地变化。在C++中实现状态模式,我们...
状态模式-State Pattern状态模式-State Pattern【学习难度:,使用频率:】状态模式-State Pattern处理对象的多种状态及其相互
在《设计模式》实战---状态模式(State Pattern)这篇文章中,作者可能详细探讨了以下关键点: 1. **模式定义**:状态模式允许对象在内部状态改变时改变其行为,对象看起来好像修改了它的类。这通过将每个状态封装...
在C++中实现状态模式,我们通常会定义一个抽象状态类(State),它声明了所有可能的状态行为。然后,创建一系列具体状态类(ConcreteState)来实现这些行为。每个具体状态类代表一种特定的状态,并且在内部维护当前...
状态模式(State Pattern)是一种行为设计模式,它允许对象在内部状态改变时改变其行为,对象看起来似乎修改了它的类。这种模式将一个对象的行为分解为各个独立的状态,并且每个状态都封装在自己的类中,使得对象在...
State模式在实际使用中比较多,适合"状态的切换".因为我们经常会使用If elseif else 进行状态切换, 如果针对状态的这样判断切换反复出现,我们就要联想到是否可以采取State模式了. 不只是根据状态,也有根据属性.如果...
在提供的压缩包`state.zip`中,很可能包含一个简单的状态模式实现,可能包括`Context`、`AbstractState`和几个`ConcreteState`类。这些类的结构可能是这样的: ```java // Context public class Context { ...
标题和描述均提到了"C#面向对象设计模式"中的State状态模式,这表明文章的核心内容是围绕State模式在C#编程语言中的应用展开。State模式是一种行为设计模式,旨在允许对象在其内部状态改变时,其行为也能相应地改变...
状态模式是一种行为设计模式,它允许对象在内部状态改变时改变其行为,对象看起来似乎修改了它的类。在C++中,状态模式通常通过定义一系列的类来表示各种状态,并用一个上下文类来管理这些状态的切换。下面将详细...
在订单状态管理中,状态机模式是一种常用的解决方案,但是在实际项目中,状态机的使用率并没有想象中那么高。笔者在电商领域进行后端开发时,发现了状态机的重要性,但是在使用 Spring StateMachine 时,发现了它的...
状态模式是一种行为设计模式,它允许对象在内部状态改变时改变其行为,看起来好像对象改变了它的类。在Java中,状态模式通常通过定义不同的状态类和一个上下文类来实现,其中上下文类持有状态对象并调用其方法来响应...
状态模式是一种行为设计模式,它使你能在运行时改变对象的行为。在TCP连接中,状态模式的应用尤为常见,因为TCP连接在不同的阶段会有不同的行为,比如建立连接、数据传输、断开连接等。下面我们将详细探讨这个模式...