`

设计模式:状态模式

阅读更多

状态模式主要是为了在运行的时候来回切换状态。

1、状态模式故事

人们生活在不同的财富状况下,他们有些富有,有些却贫穷。这两种状态——富有和贫穷,随着时间的推移可能会相互转化。人们在贫穷的时候通常都会努力工作,而富有的时候常常玩乐。他们干什么取决于他们生活在贫穷还是富有状态下。他们的行动作为又影响贫富状态的变化,要不然,人类社会就不公平了。

2、类图

下图就是它的类图,你可以比较下策略模式来更好的理解下他们的不同。



 3、代码实例

状态类

interface State {
	public void saySomething(StateContext sc);
}

class Poor implements State {

	@Override
	public void saySomething(StateContext sc) {
		// TODO Auto-generated method stub
		System.out.println("我没钱,我努力赚钱!");
		sc.changeState(new Rich());
	}

}

class Rich implements State {

	@Override
	public void saySomething(StateContext sc) {
		// TODO Auto-generated method stub
		System.out.println("我有钱,我挥霍!");
		sc.changeState(new Poor());
	}

}

 状态上下文类

class StateContext {
	private State currentState;

	public StateContext() {
		currentState = new Poor();
	}

	public void changeState(State newState) {
		currentState = newState;
	}

	public void saySomething() {
		this.currentState.saySomething(this);
	}
}

 主程序入口,测试下

public class Main {
	public static void main(String[] args) {
		StateContext sc = new StateContext();
		sc.saySomething();
		sc.saySomething();
		sc.saySomething();
		sc.saySomething();
	}
}

 结果:

我没钱,我努力赚钱!
我有钱,我挥霍!
我没钱,我努力赚钱!
我有钱,我挥霍!

 

  • 大小: 39 KB
分享到:
评论

相关推荐

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

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

    《设计模式:可复用面向对象软件的基础》英文版

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

    设计模式:可复用面向对象软件的基础(非扫描版+高清)

    《设计模式:可复用面向对象软件的基础》是一本经典的软件工程著作,它详细阐述了在面向对象编程中,如何通过使用预定义的解决方案模板来解决常见问题,从而提高代码的可读性、可维护性和复用性。设计模式是经验丰富...

    设计模式:基于C#的工程化实现及扩展(完整电子版)

    总之,《设计模式:基于C#的工程化实现及扩展》是一本对于C#开发者来说非常有价值的参考资料,它不仅讲解了设计模式的理论,还提供了丰富的实践案例,帮助读者掌握如何在实际项目中应用这些模式,提升软件开发的专业...

    设计模式:可复用面向对象软件的基础--详细书签版

     “[设计模式]在实用环境下特别有用,因为它分类描述了一组设计良好,表达清楚的面向对象软件设计模式。整个设计模式领域还很新,本书的四位作者也许已占据了这个领域造诣最深的专家中的半数,因而他们定义模式的方法...

    《设计模式:可复用面向对象软件的基础》学习并理解 23 种设计模式

    《设计模式:可复用面向对象软件的基础》一书介绍了23种经典的设计模式,这些模式大致可以分为三大类: 1. **创建型模式**:专注于对象的创建机制,确保系统在合适的时机创建正确的对象。 - **单例模式**...

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

    Java 架构设计模式 - 状态模式和模板模式 在软件设计中,了解设计模式非常重要,它可以帮助开发者编写更好的代码,使得系统更加灵活、可维护和可扩展。今天,我们将讨论两种常用的Java设计模式:状态模式和模板模式...

    设计模式:可复用面向对象软件设计基础(附源码)

    3. **行为型模式**:包括责任链模式、命令模式、解释器模式、迭代器模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式。这些模式主要处理对象之间的交互和职责分配。 例如,单例模式...

    设计模式之:状态模式

    状态模式是一种行为设计模式,它允许对象在内部状态改变时改变其行为,对象看起来似乎修改了它的类。这种模式常用于处理对象的状态变化,使得对象的行为与其状态紧密相关,而状态之间的转换则通过上下文对象来实现。...

    JAVA设计模式:状态模式

    那么糖果机呢一般有这几中状态,待机状态、持有硬币的准备状态、运行状态即正在售出状态和初始状态这么几种正常状态。我们发现处于不同状态的时候,持有的行为是不一样的,图如下:如果我们采用传统的方法来写代码,...

    1.《设计模式:可复用面向对象软件的基础(完整书签)》

    总的来说,《设计模式:可复用面向对象软件的基础》是一本深入理解和应用面向对象设计的必备书籍,它不仅介绍了23种核心设计模式,还提供了大量实例和解释,帮助读者将理论知识转化为实际的编程技巧。通过对这本书的...

    设计模式_基于C#的工程化实现及扩展_源码

    《设计模式:基于C#的工程化实现及扩展》是一份深入探讨软件设计模式的宝贵资源,它提供了C#语言下的具体实现与扩展,旨在帮助开发者提升代码的可读性、可维护性和可复用性。这个压缩包包含了多个源码文件,分别命名...

    C#面向对象设计模式纵横谈(25):设计模式总结

    15. 状态模式:状态模式允许对象在其内部状态改变时改变其行为,看起来好像对象改变了它的类。 16. 策略模式:策略模式定义了一系列的算法,并将每一个算法封装起来,使它们可以互相替换,让算法的变化独立于使用...

    设计模式可复用面向对象软件的基础 源码

    在《设计模式:可复用面向对象软件的基础》一书中,作者Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides(通常被称为GoF,Gang of Four)详细阐述了23种经典的设计模式。这些模式分为三类:创建型模式、...

    设计模式:可服用面向对象软件的基础

    8. 状态模式:允许一个对象在其内部状态改变时改变它的行为,看起来像是改变了它的类。 9. 策略模式:定义一系列算法,并将每个算法封装起来,使它们可以互相替换,策略对象可以独立于使用它的客户端而变化。 10. ...

    状态及模板和迭代等设计模式及实现

    在给定的标题“状态及模板和迭代等设计模式及实现”中,提到了三种经典的设计模式:状态模式、模板模式和迭代器模式。这些模式都是软件工程中常用的设计策略,旨在提高代码的可复用性、可读性和可维护性。 **状态...

    23种设计模式(C++).pdf

    设计模式是面向对象编程领域中...通过阅读GoF的《设计模式:可复用面向对象软件的基础》等经典书籍,以及在项目中实践设计模式,可以提升开发人员对面向对象分析和设计(OOA/D)的理解,从而提高软件开发的效率和质量。

Global site tag (gtag.js) - Google Analytics