状态模式中,类的行为是基于它的状态改变的,允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。这种类型的设计模式属于行为型模式。

在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。

状态模式的实现:

1. 创建状态的抽象类

//抽象状态类
public abstract class State {public abstract void handle(Context context);
}

2. 创建抽象类的两个具体状态

//状态A
public class Astate extends State {@Overridepublic void handle(Context context) {System.out.println("当前状态为A,A状态执行结束,改变状态为B");context.setState(new Bstate());}
}
//状态B
public class Bstate extends State {@Overridepublic void handle(Context context) {System.out.println("当前状态为B,B状态执行结束,改变状态为A");context.setState(new Astate());}
}

3. 创建Context

public class Context {private State state;public Context() {this.state = new Astate();}public void setState(State state) {this.state = state;}public State getState() {return (state);}public void handle() {state.handle(this);}
}

4. 状态模式测试

public class StateMain {public static void main(String[] args) {Context context = new Context();context.handle();context.handle();context.handle();context.handle();context.handle();}
}

  • 什么是设计模式:【每天一个java设计模式(零)】 - 设计模式基本概念及七大设计原则

创建型模式

  • 工厂模式:【每天一个java设计模式(一)】 - 工厂模式
  • 抽象工厂模式: 【每天一个java设计模式(二)】 - 抽象工厂模式
  • 单例模式:【每天一个java设计模式(三)】 - 单例模式
  • 原型模式:【每天一个java设计模式(四)】 - 原型模式
  • 建造者模式: 【每天一个java设计模式(五)】 - 建造者模式

结构型模型

  • 适配器模式 : 【每天一个java设计模式(六)】 - 适配器模式
  • 代理模式: 【每天一个java设计模式(七)】 - 代理模式模式
  • 桥接模式:【每天一个java设计模式(八)】 - 桥接模式
  • 装饰器模式:【每天一个java设计模式(九)】 - 装饰器模式
  • 外观模式:【每天一个java设计模式(十)】 - 外观模式
  • 享元模式:【每天一个java设计模式(十一)】 - 享元模式
  • 组合模式:【每天一个java设计模式(十二)】 - 组合模式

行为型模式

  • 模板模式:【每天一个java设计模式(十三)】 - 模板模式
  • 解释器模式:【每天一个java设计模式(十四)】 - 解释器模式
  • 命令模式:【每天一个java设计模式(十五)】 - 命令模式
  • 策略模式:【每天一个java设计模式(十六)】 - 策略模式

下一节:
观察者模式:【每天一个java设计模式(十八)】 - 观察者模式

【每天一个java设计模式(十七)】 - 状态模式相关推荐

  1. java设计模式之状态模式_Java中的状态设计模式

    java设计模式之状态模式 在本教程中,我们将探讨另一种流行的行为设计模式-状态设计模式. 当我们使用可以存在于多个状态的对象时,状态设计模式的知识变得非常有用. 当对象的行为取决于其当前状态时,我们 ...

  2. 【转】设计模式 ( 十七) 状态模式State(对象行为型)

    设计模式 ( 十七) 状态模式State(对象行为型) 1.概述 在软件开发过程中,应用程序可能会根据不同的情况作出不同的处理.最直接的解决方案是将这些所有可能发生的情况全都考虑到.然后使用if... ...

  3. 图解java多线程设计模式 pdf_图解Java设计模式之状态模式

    图解Java设计模式之状态模式 APP抽象活动问题 状态模式基本介绍 状态模式的原理类图 状态模式解决APP抽奖问题 状态模式的注意事项和细节 APP抽象活动问题 请编写程序完成APP抽象活动,具体要 ...

  4. java设计模式_状态模式

    2019独角兽企业重金招聘Python工程师标准>>> 状态模式类比if,else,状态决定行为.如果需要增加一个行为,通过状态模式,仅仅需要增加一个实现公共接口State的实现类即 ...

  5. java状态模式例子答案_[转载]java设计模式_状态模式(带例子)

    状态模式(STATE) Java深入到一定程度,就不可避免的碰到设计模式这一概念,了解设计模式,将使自己对java中的接口或抽象类应用有更深的理解.设计模式在java的中型系统中应用广泛,遵循一定的编 ...

  6. Java 设计模式之状态模式

    一.了解状态模式 1.1 什么是状态模式 状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它自己的类. 状态模式将状态封装为独立的类,并将动作委托到代表当前状态的对象. 1.2 状态 ...

  7. 【状态模式】Java设计模式之状态模式

    何时使用 State模式在实际使用中比较多,适合"状态"的切换.因为我们经常会使用If else if else 进行状态切换,如果针对状态的这样判断切换反复出现,我们就要联想到是 ...

  8. Java设计模式之状态模式

    本文继续介绍23种设计模式系列之策略模式. 何时使用 State模式在实际使用中比较多,适合"状态"的切换.因为我们经常会使用If else if else 进行状态切换,如果针对 ...

  9. 【Java设计模式】状态模式

    ? 在很多情况下,一个对象的行为取决于一个或多个动态变化的属性,这样的属性叫做状态,这样的对象叫做有状态的( stateful)对象,这样的对象状态是从事先定义好的一系列值中取出的.当一个这样的对象与 ...

最新文章

  1. 通过nginx配置文件抵御攻击,防御CC攻击的经典思路!
  2. 【开发环境】为 Visual Studio Community 2013 版本安装中文语言包 ( 安装 Test Agents 2013 | 安装 Visual Studio 2013 简体中文 )
  3. 隐马尔科夫模型 概念(上)
  4. kali linux解密栅栏密码,最详细bugku加密小白解法---持续更新!
  5. 计算机专业课的教学准备,计算机专业课程教学中的分层教学模式
  6. Express框架开发知识点总结
  7. c语言 静态变量 初始化,c – 静态变量初始化两次
  8. 一个java程序_从另一个java程序运行java程序
  9. H5 播放视频常见bug及解决方案
  10. ZD_source code for problem 2971
  11. python strip() 方法
  12. GDT、LDT、IDTR、TR
  13. 二分类变量相关性分析spss_两个有序分类变量相关性的卡方检验-SPSS教程
  14. 数据流被提前关闭- connectionClosedException:premature end of chunk coded message body:closing chunk expected
  15. LittleVGL入门
  16. (9)数据分析-相关性分析
  17. Etcd——大厂面试问题集合
  18. math.h数学函数
  19. 童年记忆中的零食商品
  20. [架构设计] 结构型模型

热门文章

  1. linux递归强行删除目录和文件
  2. unbuntu 云主机 远程部署系统
  3. STM32定时器输出比较模式中的疑惑
  4. PaddleHub创意项目-制作证件照(抠图换底美颜)
  5. 智慧养老智能化解决方案-智能床垫-智慧养老解决方案
  6. 深圳GMP洁净车间设计基本要求SICOLAB
  7. 镇魔曲手游服务器维护,《镇魔曲手游》11月11日维护公告
  8. 纯手写原生PHP网站管理后台系统 网站管理系统
  9. 经济——读《论21世纪的资本》有感
  10. 自己的英文名字怎么写