23种设计模式(二十二)状态模式(阁瑞钛伦特软件-九耶实训)
常说的设计模式是23种设计模式,分为3大类:
- 创建型模式5种:工厂方法、抽象工厂、单例、建造者、原型
- 结构型模式7种:适配器、代理、桥接、装饰者、外观、享元、组合
- 行为型模式11种:模板方法、解释器、策略、观察者、迭代器、职责链、命令、备忘录、状态、访问者、中介者。
上次咱们说了“备忘录模式”,今天咱们来说“状态模式”。
“状态模式”实际是对状态对象的处理,也就是将程序中的状态属性作为对象来应用与管理,达到在状态更改后,执行与状态相应功能的目的。
当前以最简单的状态类结构为例:
状态结构的编写
使用状态的环境结构编写
程序应用
下面我们来设定一个场景,更多的了解使用状态对象的作用:
《西游记》中孙悟空非常的厉害,各种道术无所不能。
其中另众宅男女神闻之变色的咒术——“穿墙术”。
而这“穿墙术”的实现,今天就用“状态模式”的代码来实现。
首先要分析一下穿墙术的施展过程:
- 墙前念咒语。
- 闭眼穿过墙。
- 睁眼到墙后。
实际上,墙的出现本身就是为了阻隔,而念咒语无非就是与墙沟通,让墙同意穿过。
也就是说,把墙作为状态的载体,墙的状态默认是关闭状态,通过正确的咒语让墙的状态改变成打开状态,从而能轻松穿过。
先创建墙的接口
“pass”处理通过
“spell”处理咒语
“setState”设置状态
墙的实现类
建立状态接口
墙的状态实现,不让过的状态和让过的状态
异常信息类
猴子需要穿墙和念咒语两个行为
所以猴子类
最后实际应用
23种设计模式(二十二)状态模式(阁瑞钛伦特软件-九耶实训)相关推荐
- 23种设计模式(二十三)访问者模式(阁瑞钛伦特软件-九耶实训)
常说的设计模式是23种设计模式,分为3大类: 创建型模式5种:工厂方法.抽象工厂.单例.建造者.原型 结构型模式7种:适配器.代理.桥接.装饰者.外观.享元.组合 行为型模式11种:模板方法.解释器. ...
- 23种设计模式(十四)模板方法模式(阁瑞钛伦特软件-九耶实训)
常说的设计模式是23种设计模式,分为3大类: 创建型模式5种:工厂方法.抽象工厂.单例.建造者.原型 结构型模式7种:适配器.代理.桥接.装饰者.外观.享元.组合 行为型模式11种:模板方法.解释器. ...
- 23种设计模式(十一)外观模式(阁瑞钛伦特软件-九耶实训)
常说的设计模式是23种设计模式,分为3大类: 创建型模式5种:工厂方法.抽象工厂.单例.建造者.原型 结构型模式7种:适配器.代理.桥接.装饰者.外观.享元.组合 行为型模式11种:模板方法.解释器. ...
- 在Windows操作系统中安装MySQL8教程(一)(二)(阁瑞钛伦特软件—九耶实训)
1.1 下载MySQL8数据库 (已上传) 打开网址: https://www.mysql.com 显示界面如图1-xx所示. 点击DOWNLOADS菜单,显示界面如图1-xx所示. 点击" ...
- 二十三种设计模式(第十二种)-----代理模式(Proxy)
二十三种设计模式(第十二种)-----代理模式(Proxy) 尚硅谷视频连接https://www.bilibili.com/video/BV1G4411c7N4?from=search&se ...
- JavaScript 23 种设计模式之 4 抽象工厂模式
JavaScript 23 种设计模式之 4 抽象工厂模式 概念与特点 结构与实现 应用场景 应用实例 总结 概念与特点 概念: 提供一组相关或相互依赖对象的接口.抽象工厂模式是工厂方法模式的升级版, ...
- 23种设计模式-个人笔记(二)
目录 五.23 种设计模式 1.单例模式 1.1.单例模式的定义与特点 1.2.单例模式的优点和缺点 1.3.单例模式的应用场景 1.4.单例模式的结构与实现 1.5.八种方式详解 1.6.单例模式在 ...
- 23种设计模式之单例模式、工厂模式、原型模式、建造者模式
系列文章目录 第一章:程序设计原则-单一职责.接口隔离.依赖倒置.里式替换 第二章:程序设计原则-开闭原则.迪米特法则.合成复用原则 文章目录 系列文章目录 一.设计模式简单介绍 1.1.什么是设计模 ...
- Unity实现:23种设计模式、《游戏编程模式》
目录 一.23种设计模式在Unity实现 Creational Patterns 创建型模式(5种) 工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式 Structural Patterns ...
最新文章
- ECC6.0中数据导出到本地时报错GETWA_NOT_ASSIGNED
- redis 双写一致性 看一篇成高手系列 一
- python入门(5)使用文件编辑器编写代码并保存执行
- python爬取网易云歌单_详解python selenium 爬取网易云音乐歌单名
- [01] 四大组件之Activity
- 《Adobe Photoshop CS6中文版经典教程(彩色版)》—第1课1.4节在Photoshop中还原操作...
- 一场重新定义的发布会
- 计算机快捷键大全列表6,快捷键大全excel
- 台式计算机提示内存不足怎么办,一招解决电脑提示内存不足-电脑内存不足怎么办...
- 什么是列联表分析(Contingency table analysis)?
- android 电视 vob格式转换,旭日Android视频格式转换器
- 系统安装-U盘安装Windows XP SP3纯净版简述
- 神经网络隐含层节点数
- 爬虫新手入门(二):爬取一本言情小说的内容
- 集成——Mac电脑上app自动化测试(Appium + xcode 8.2 + python)环境搭建
- 《Elixir In Action》第一章--第五章笔记
- 输入输出电阻的个人理解
- sata接口测试软件,SATA接口一致性测试,眼图测试
- java 除以1000_练习:将从表读出来的时间戳除以1000(java读时间戳会多出3个000)用jackson包 实现...
- lua_pcall详解
热门文章
- 所谓习惯,就是重复次数多到足以自动化的行为
- html设计大赛文档怎写,标语设计大赛活动策划
- angular中跨域设置iframe自适应高度,去滚动条。
- 如何使用爬虫语言爬取网页数据?
- 开发智能语音机器人所需要的Freesiwtch VAD识别模块参数
- 优麒麟Ubuntu Kylin 22.04安装远程控制VNC(tigervnc)配置说明
- 头像 HTML5 JSON PHP 摄像头,canvas之自定义头像功能实现代码示例
- MySQL 语句级避免重复插入—— Insert Select Not Exist
- Python语言基础-2.4列表(理)
- stable diffusion(杂谈)