状态模式主要是为了在运行的时候来回切换状态。
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(); } }
结果:
我没钱,我努力赚钱!
我有钱,我挥霍!
我没钱,我努力赚钱!
我有钱,我挥霍!
我有钱,我挥霍!
我没钱,我努力赚钱!
我有钱,我挥霍!
相关推荐
状态模式是一种行为设计模式,它使你能在运行时改变对象的行为。在TCP连接中,状态模式的应用尤为常见,因为TCP连接在不同的阶段会有不同的行为,比如建立连接、数据传输、断开连接等。下面我们将详细探讨这个模式...
例如责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、中介者模式(Mediator)、备忘录模式(Memento)、观察者模式(Observer)、状态模式...
《设计模式:可复用面向对象软件的基础》是一本经典的软件工程著作,它详细阐述了在面向对象编程中,如何通过使用预定义的解决方案模板来解决常见问题,从而提高代码的可读性、可维护性和复用性。设计模式是经验丰富...
总之,《设计模式:基于C#的工程化实现及扩展》是一本对于C#开发者来说非常有价值的参考资料,它不仅讲解了设计模式的理论,还提供了丰富的实践案例,帮助读者掌握如何在实际项目中应用这些模式,提升软件开发的专业...
“[设计模式]在实用环境下特别有用,因为它分类描述了一组设计良好,表达清楚的面向对象软件设计模式。整个设计模式领域还很新,本书的四位作者也许已占据了这个领域造诣最深的专家中的半数,因而他们定义模式的方法...
《设计模式:可复用面向对象软件的基础》一书介绍了23种经典的设计模式,这些模式大致可以分为三大类: 1. **创建型模式**:专注于对象的创建机制,确保系统在合适的时机创建正确的对象。 - **单例模式**...
Java 架构设计模式 - 状态模式和模板模式 在软件设计中,了解设计模式非常重要,它可以帮助开发者编写更好的代码,使得系统更加灵活、可维护和可扩展。今天,我们将讨论两种常用的Java设计模式:状态模式和模板模式...
3. **行为型模式**:包括责任链模式、命令模式、解释器模式、迭代器模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式。这些模式主要处理对象之间的交互和职责分配。 例如,单例模式...
状态模式是一种行为设计模式,它允许对象在内部状态改变时改变其行为,对象看起来似乎修改了它的类。这种模式常用于处理对象的状态变化,使得对象的行为与其状态紧密相关,而状态之间的转换则通过上下文对象来实现。...
那么糖果机呢一般有这几中状态,待机状态、持有硬币的准备状态、运行状态即正在售出状态和初始状态这么几种正常状态。我们发现处于不同状态的时候,持有的行为是不一样的,图如下:如果我们采用传统的方法来写代码,...
总的来说,《设计模式:可复用面向对象软件的基础》是一本深入理解和应用面向对象设计的必备书籍,它不仅介绍了23种核心设计模式,还提供了大量实例和解释,帮助读者将理论知识转化为实际的编程技巧。通过对这本书的...
《设计模式:基于C#的工程化实现及扩展》是一份深入探讨软件设计模式的宝贵资源,它提供了C#语言下的具体实现与扩展,旨在帮助开发者提升代码的可读性、可维护性和可复用性。这个压缩包包含了多个源码文件,分别命名...
15. 状态模式:状态模式允许对象在其内部状态改变时改变其行为,看起来好像对象改变了它的类。 16. 策略模式:策略模式定义了一系列的算法,并将每一个算法封装起来,使它们可以互相替换,让算法的变化独立于使用...
在《设计模式:可复用面向对象软件的基础》一书中,作者Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides(通常被称为GoF,Gang of Four)详细阐述了23种经典的设计模式。这些模式分为三类:创建型模式、...
8. 状态模式:允许一个对象在其内部状态改变时改变它的行为,看起来像是改变了它的类。 9. 策略模式:定义一系列算法,并将每个算法封装起来,使它们可以互相替换,策略对象可以独立于使用它的客户端而变化。 10. ...
在给定的标题“状态及模板和迭代等设计模式及实现”中,提到了三种经典的设计模式:状态模式、模板模式和迭代器模式。这些模式都是软件工程中常用的设计策略,旨在提高代码的可复用性、可读性和可维护性。 **状态...
设计模式是面向对象编程领域中...通过阅读GoF的《设计模式:可复用面向对象软件的基础》等经典书籍,以及在项目中实践设计模式,可以提升开发人员对面向对象分析和设计(OOA/D)的理解,从而提高软件开发的效率和质量。