设计说明-行为型-状态模式-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中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…

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

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

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

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

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哈希概…

应急救灾北斗终端手机应用方案

在应对自然灾害和紧急救援的严峻挑战中,技术的力量从未如此重要。为了保障救援人员能够迅速、准确地响应灾情,提供及时有效的救助,顶坚应急救灾北斗终端手机应用应运而生。这款应用依托北斗卫星导航系统的高精度定位与通信功能,不…

图扑智慧农业——生态鱼塘数字孪生监控

智慧农业园作为新型农业经营模式,正在以其高效、环保、可持续的特点受到广泛关注。智慧鱼塘作为智慧农业中一项关键技术,结合物联网、人工智能、云计算等技术,实现对新型养殖模式的实时监控、优化与管理。 效果展示 图扑软件应用自研 HT for…

巩固学习7

正则表达式 就是用来找到符合模式的字符串,这些模式包括:是什么字符,重复多少次,在什么位置,有哪些额外的约束 找某个字符串 import re text身高:178 体重:168 学号:123456 密码:9527 #在Python中,r前缀用…

BFD双向转发检测

BFD概述 Bidirectional Forwarding Detection :双向转发检测 BFD技术背景 现网中存在的问题 不能快速有效的发现网络设备或链路中出现的故障不能以毫秒级的速度发现网络中的问题协议自身的报文检测机制一般都大于1秒 解决方案: 需要一种专门用于快…

【脚本】使用脚本备份docker中部署的mysql数据库

v1版本明文密码方式: #!/bin/bash# 定义 MySQL 容器名称和数据库信息 container_name"mysql_container" db_user"root" db_password"your_password"# 定义要备份的数据库列表 databases("database1" "database2"…

Outlook的IMAP服务器怎么填写?填写步骤?

Outlook的IMAP服务器如何使用?服务器地址怎么查找? 当我们在Outlook中设置新的电子邮件账户时,经常会遇到一个问题:Outlook的IMAP服务器怎么填写呢?接下来,AokSend将详细解答这个问题,并帮助大…