设计说明-行为型-状态模式-State

状态接口

public interface State {//状态接口void insertQuarter();//投币void ejectQuarter();//退币void turnCrank();//按下“出纸巾”按钮void dispense();//出纸巾
}

有纸巾类

public class HasQuarterState implements State {private TissueMachine tissueMachine;@Overridepublic void insertQuarter() {}@Overridepublic void ejectQuarter() {tissueMachine.setState(tissueMachine.getNoQuarterState());}@Overridepublic void turnCrank() {}@Overridepublic void dispense() {}
}

没有纸巾类

public class NoQuarterState implements State {private TissueMachine tissueMachine;@Overridepublic void insertQuarter() {tissueMachine.setState(tissueMachine.getHasQuarterState());}@Overridepublic void ejectQuarter() {}@Overridepublic void turnCrank() {}@Overridepublic void dispense() {}
}

售完类

public class SoldOutState implements State {private TissueMachine tissueMachine;@Overridepublic void insertQuarter() {}@Overridepublic void ejectQuarter() {}@Overridepublic void turnCrank() {}@Overridepublic void dispense() {if (tissueMachine.getCount() > 0) {tissueMachine.setCount(tissueMachine.getCount() - 1);tissueMachine.setState(tissueMachine.getNoQuarterState());} else {tissueMachine.setState(tissueMachine.getSoldOutState());}}
}

售卖类

public class SoldState implements State {private TissueMachine tissueMachine;@Overridepublic void insertQuarter() {tissueMachine.setState(this);}@Overridepublic void ejectQuarter() {}@Overridepublic void turnCrank() {}@Overridepublic void dispense() {}
}

纸巾自动售货机类

@Getter
@Setter
public class TissueMachine {//纸巾售货机类private State soldOutState, noQuarterState, hasQuarterState, soldState, state;int count = 0;//纸巾数public TissueMachine(int count) {this.count = count;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/12095.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python实战开发及案例分析(21)—— 广度优先

广度优先搜索(Breadth-First Search, BFS)是图和树结构中的一种基本搜索算法。它从根节点开始逐层遍历,先访问所有邻近节点,然后再遍历这些邻近节点的邻居。BFS通常使用队列来实现这一过程。在Python中,可以使用collec…

前端学习——工具的使用

文章目录 1. 引入一个组件需要什么步骤2. 监听变量的修改3. async与await实现异步调用4. position: relative5. 定时执行方法 1. 引入一个组件需要什么步骤 引入一个组件,一定不要加{} (对)import editForm from “./component/editForm”; …

Python中tkinter编程入门4

在Python中tkinter编程入门3-CSDN博客中创建了Button控件,点击该控件就会产生一个点击事件,在创建Button控件时指定该点击事件的处理程序后,按键控件就会对用户的点击事件产生响应。 1 定义事件处理器 定义事件处理器就是一个自定义的函数。…

前端连续发送同一个请求时,终止上一次请求

场景:几个tab页之间快速的切换(tab页只是参数不同,下边的数据渲染给同一个data)就会导致如果我在1,2,3,tab页按照顺序快速点击,发送三个请求,我想要展示的是3但是如果1或者2请求响应的时间比3长…

Python tensor向量维度转换,不同维度的向量转化为相同的维度,经过全连接层MLP的维度转换,代码实战

问题:在机器学习特征工程中,假如每类特征需要转化为相同的维度进行拼接,那该怎么办呢?接一个全连接层MLP就可以了。 例子:将(128,64) 维度的向量转化为(128,32)维。 impo…

CountDownLatch的 常用场景及使用示例

CountDownLatch的 常用场景及使用示例 CountDownLatch是Java并发编程中一个非常实用的同步工具类,它允许一个或多个线程等待其他线程完成操作后再继续执行。其核心功能在于控制线程的执行流程,确保某些关键操作或准备工作完全就绪后,再释放等…

Stm32串口搭配DMA实现自定义printf、scanf

前言:本文仅供学习参考使用,主要目的是让大家快速使用串口调试,文章所提及的GCC适用于Clion,Vscode等第三方编辑器的用户。作者有时间会继续更新^_^ 一、GCC环境 1、标准库 (1)、使用方法 在主函数while(1)初始化中,添加Seria…

柯桥法语学习-5大法语听写网站:全力助攻你的dictée!

提到法语dicte,绝对可是法语学生们的老大难,简直就是心痛得不能自已啊!所以今天,法语君整理了5个听写网站助攻大家的dicte哦! Projet Voltaire 01 一个很容易让你对dicte上瘾的APP 写邮件、实习报告或者动机信时&…

vue + koa2 + crypto-js + md5加密:创建加密账户、登录验证

一、前端页面设置 1、创建账户 import CryptoJS from crypto-js; const loginFun function () {request({url: /user/register,method: post,data: {username: ruleForm.username,password: CryptoJS.MD5(ruleForm.password).toString(),role: ruleForm.role}}).then((res) …

徐翔——投资的心性

徐翔,1976年出生。 1993年,徐翔当时还是个高中生,17岁的他带着父母给的几万元本钱进入股票市"那个时候,宁波老百姓家里几万元很正常,而且家里就我一个小孩。”徐翔说。场。1994年,18岁的徐翔放弃高考&#xff0c…

XML的现状及其发展

XML(Extensible Markup Language)是一种用于描述结构化数据的标记语言,它具有良好的可读性和可扩展性,并且被广泛应用于数据交换、数据存储和配置文件等领域。 目前,XML仍然是一种非常重要的数据交换格式。它被广泛应…

Nat Plants | 植物抽核单细胞!多组学探究大豆根瘤成熟过程

发表时间:2023-04 发表期刊:Nature Plants 影响因子:17.352 DOI:10.1038/s41477-023-01387-z 研究背景 根瘤菌是亲和互作寄主植物,感染宿主并在根部形成共生器官根瘤,具有固氮…

jmeter中HttpClient4发送失败,java方法请求成功

jmeter中HttpClient4请求失败 上传文件时:Httpclient4: 请求体 请求头 响应结果 ,后端服务都总是提示存在非法标签。 jmeter中使用java请求成功 修改使用java方式,访问正常; 根据分析可能因为HC4对一些特殊字符会进行转义,转义后…

idea配置MySQL提示

点击sql语句,然后再选择show context actions 然后再选择Inject language or reference 然后再选择MySQL 然后我们会发现sql语句变颜色了 如果表是红色 那么需要我们连接mysql的对于的数据库

做私域不止是积累流量,生态也很重要!

如今,私域流水占比已经逼近整个零售市场的30%,达到4万亿规模,百度、阿里、腾讯等头部玩家也都在加速布局,私域运营,已不再是一个单一的商业模式或者运营手段,而是逐渐构成一种可持续的行业生态。 一、什么…

全球量子计算已开始商业化!应用最多的行业你一定想不到

内容来源:量子前哨(ID:Qforepost) 文丨卉可 排版丨沛贤 深度好文:2600字丨5 分钟阅读 01 量子计算是一场高风险的游戏 近日,PsiQuantum从澳大利亚联邦政府和地方政府获得了10亿澳元资金,这…

大屏UI:建筑可视化应用越来越广泛,根本挡不住。

建筑可视化在可视化大屏中有许多应用场景,以下是其中一些常见的应用场景: 建筑项目展示:可以使用建筑可视化技术展示正在进行或已完成的建筑项目。通过可视化大屏,可以展示建筑的外观、内部布局、材料选择等信息,帮助…

鬼畜作品创作必备素材,鬼畜自学语音包合集

一、素材描述 鬼畜是什么?鬼畜是一种网络流行语,也是网络文化的一种表现形式。它指的是将原本无关的两个或多个视频、音频、图片或文字进行剪辑、混合、重组等处理后,形成一种新的有趣、诙谐或恶搞的作品。鬼畜的制作过程通常需要一定的技术…

图像归一化处理

归一化 归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为标量。 在多种计算中都经常用到这种方法。 简单介绍 归一化是一种无量纲处理手段,使物理系统数值的绝对值变成某种相对值关…

C++哈希(个人笔记)

C哈希 1.unordered_mapd1.1unordered_map的构造函数1.2unorder_map的容量1.3unordered_map的迭代器1.4unordered_map的元素访问1.5unorder_map的查找1.6unordered_map的修改操作1.7unordered_map的桶操作 2.unordered_set3.unordered_set和unordered_set的笔试题4.哈希4.1哈希概…