常说的设计模式是23种设计模式,分为3大类:

  • 创建型模式5种:工厂方法、抽象工厂、单例、建造者、原型
  • 结构型模式7种:适配器、代理、桥接、装饰者、外观、享元、组合
  • 行为型模式11种:模板方法、解释器、策略、观察者、迭代器、职责链、命令、备忘录、状态、访问者、中介者。

上次咱们说了“备忘录模式”,今天咱们来说“状态模式”。

“状态模式”实际是对状态对象的处理,也就是将程序中的状态属性作为对象来应用与管理,达到在状态更改后,执行与状态相应功能的目的。

当前以最简单的状态类结构为例:

状态结构的编写

使用状态的环境结构编写

程序应用

下面我们来设定一个场景,更多的了解使用状态对象的作用:

《西游记》中孙悟空非常的厉害,各种道术无所不能。

其中另众宅男女神闻之变色的咒术——“穿墙术”。

而这“穿墙术”的实现,今天就用“状态模式”的代码来实现。

首先要分析一下穿墙术的施展过程:

  1. 墙前念咒语。
  2. 闭眼穿过墙。
  3. 睁眼到墙后。

实际上,墙的出现本身就是为了阻隔,而念咒语无非就是与墙沟通,让墙同意穿过。

也就是说,把墙作为状态的载体,墙的状态默认是关闭状态,通过正确的咒语让墙的状态改变成打开状态,从而能轻松穿过。

先创建墙的接口

“pass”处理通过

“spell”处理咒语

“setState”设置状态

墙的实现类

建立状态接口

墙的状态实现,不让过的状态和让过的状态

异常信息类

猴子需要穿墙和念咒语两个行为

所以猴子类

最后实际应用

23种设计模式(二十二)状态模式(阁瑞钛伦特软件-九耶实训)相关推荐

  1. 23种设计模式(二十三)访问者模式(阁瑞钛伦特软件-九耶实训)

    常说的设计模式是23种设计模式,分为3大类: 创建型模式5种:工厂方法.抽象工厂.单例.建造者.原型 结构型模式7种:适配器.代理.桥接.装饰者.外观.享元.组合 行为型模式11种:模板方法.解释器. ...

  2. 23种设计模式(十四)模板方法模式(阁瑞钛伦特软件-九耶实训)

    常说的设计模式是23种设计模式,分为3大类: 创建型模式5种:工厂方法.抽象工厂.单例.建造者.原型 结构型模式7种:适配器.代理.桥接.装饰者.外观.享元.组合 行为型模式11种:模板方法.解释器. ...

  3. 23种设计模式(十一)外观模式(阁瑞钛伦特软件-九耶实训)

    常说的设计模式是23种设计模式,分为3大类: 创建型模式5种:工厂方法.抽象工厂.单例.建造者.原型 结构型模式7种:适配器.代理.桥接.装饰者.外观.享元.组合 行为型模式11种:模板方法.解释器. ...

  4. 在Windows操作系统中安装MySQL8教程(一)(二)(阁瑞钛伦特软件—九耶实训)

    1.1 下载MySQL8数据库 (已上传) 打开网址: https://www.mysql.com 显示界面如图1-xx所示. 点击DOWNLOADS菜单,显示界面如图1-xx所示. 点击" ...

  5. 二十三种设计模式(第十二种)-----代理模式(Proxy)

    二十三种设计模式(第十二种)-----代理模式(Proxy) 尚硅谷视频连接https://www.bilibili.com/video/BV1G4411c7N4?from=search&se ...

  6. JavaScript 23 种设计模式之 4 抽象工厂模式

    JavaScript 23 种设计模式之 4 抽象工厂模式 概念与特点 结构与实现 应用场景 应用实例 总结 概念与特点 概念: 提供一组相关或相互依赖对象的接口.抽象工厂模式是工厂方法模式的升级版, ...

  7. 23种设计模式-个人笔记(二)

    目录 五.23 种设计模式 1.单例模式 1.1.单例模式的定义与特点 1.2.单例模式的优点和缺点 1.3.单例模式的应用场景 1.4.单例模式的结构与实现 1.5.八种方式详解 1.6.单例模式在 ...

  8. 23种设计模式之单例模式、工厂模式、原型模式、建造者模式

    系列文章目录 第一章:程序设计原则-单一职责.接口隔离.依赖倒置.里式替换 第二章:程序设计原则-开闭原则.迪米特法则.合成复用原则 文章目录 系列文章目录 一.设计模式简单介绍 1.1.什么是设计模 ...

  9. Unity实现:23种设计模式、《游戏编程模式》

    目录 一.23种设计模式在Unity实现 Creational Patterns 创建型模式(5种) 工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式 Structural Patterns ...

最新文章

  1. ECC6.0中数据导出到本地时报错GETWA_NOT_ASSIGNED
  2. redis 双写一致性 看一篇成高手系列 一
  3. python入门(5)使用文件编辑器编写代码并保存执行
  4. python爬取网易云歌单_详解python selenium 爬取网易云音乐歌单名
  5. [01] 四大组件之Activity
  6. 《Adobe Photoshop CS6中文版经典教程(彩色版)》—第1课1.4节在Photoshop中还原操作...
  7. 一场重新定义的发布会
  8. 计算机快捷键大全列表6,快捷键大全excel
  9. 台式计算机提示内存不足怎么办,一招解决电脑提示内存不足-电脑内存不足怎么办...
  10. 什么是列联表分析(Contingency table analysis)?
  11. android 电视 vob格式转换,旭日Android视频格式转换器
  12. 系统安装-U盘安装Windows XP SP3纯净版简述
  13. 神经网络隐含层节点数
  14. 爬虫新手入门(二):爬取一本言情小说的内容
  15. 集成——Mac电脑上app自动化测试(Appium + xcode 8.2 + python)环境搭建
  16. 《Elixir In Action》第一章--第五章笔记
  17. 输入输出电阻的个人理解
  18. sata接口测试软件,SATA接口一致性测试,眼图测试
  19. java 除以1000_练习:将从表读出来的时间戳除以1000(java读时间戳会多出3个000)用jackson包 实现...
  20. lua_pcall详解

热门文章

  1. 所谓习惯,就是重复次数多到足以自动化的行为
  2. html设计大赛文档怎写,标语设计大赛活动策划
  3. angular中跨域设置iframe自适应高度,去滚动条。
  4. 如何使用爬虫语言爬取网页数据?
  5. 开发智能语音机器人所需要的Freesiwtch VAD识别模块参数
  6. 优麒麟Ubuntu Kylin 22.04安装远程控制VNC(tigervnc)配置说明
  7. 头像 HTML5 JSON PHP 摄像头,canvas之自定义头像功能实现代码示例
  8. MySQL 语句级避免重复插入—— Insert Select Not Exist
  9. Python语言基础-2.4列表(理)
  10. stable diffusion(杂谈)