设计模式-状态模式(二)

来源: 腾讯云 时间:2023-05-05 18:29:39


【资料图】

状态模式的示例

为了更好地理解状态模式的实现,我们可以以一个简单的售货机为例。假设有一个售货机,它有三种状态:待机状态(IdleState)、售出状态(SoldState)和赠品状态(WinnerState)。当用户投入硬币时,售货机会根据当前状态的不同做出相应的响应。

下面是状态模式的具体实现。

上下文(Context)

我们定义一个VendingMachine类作为上下文类,它包含一个状态对象和一个状态切换方法。

public class VendingMachine {    private State currentState;    private int count;    public VendingMachine(int count) {        this.count = count;        currentState = new IdleState(this);    }    public void setCurrentState(State currentState) {        this.currentState = currentState;    }    public void insertCoin() {        currentState.insertCoin();    }    public void pressButton() {        currentState.pressButton();    }    public void dispense() {        currentState.dispense();    }    public int getCount() {        return count;    }    public void setCount(int count) {        this.count = count;    }}

在VendingMachine类中,我们定义了一个当前状态对象currentState和一个商品数量count。在VendingMachine类的构造函数中,我们将当前状态设置为待机状态(IdleState)。VendingMachine类还定义了一些方法,包括状态切换方法setCurrentState()、插入硬币方法insertCoin()、按下按钮方法pressButton()、发放商品方法dispense()和获取商品数量方法getCount()。

X 关闭

热门推荐

设计模式-状态模式(二)

2023-05-05   腾讯云

设计模式-状态模式(一)

2023-05-05   腾讯云

设计模式-状态模式(四)

2023-05-05   腾讯云

世界讯息:今明两天,暂停!

2023-05-05   义乌城市网

设计模式-状态模式(二)

2023-05-05   腾讯云

VirtualService配置解析示例

2023-05-05   腾讯云

孝南高中-新资讯

2023-05-05   互联网

VirtualService配置解析示例

2023-05-05   腾讯云

DestinationRule子集配置

2023-05-05   腾讯云

设计模式-状态模式(三)

2023-05-05   腾讯云

设计模式-状态模式(四)

2023-05-05   腾讯云

kubernetes-Affinity示例

2023-05-05   腾讯云

设计模式-原型模式(二)

2023-05-05   腾讯云

ThinkPHP-路由和控制器(二)

2023-05-05   腾讯云

什么是HPA

2023-05-05   腾讯云

PHP-web框架Laravel-缓存(二)

2023-05-05   腾讯云

kubernetes-Service示例

2023-05-05   腾讯云

ThinkPHP-路由和控制器(二)

2023-05-05   腾讯云

什么是HPA|聚看点

2023-05-05   腾讯云

北京发布大风蓝色预警

2023-05-05   界面新闻

理义_关于理义介绍

2023-05-05   十分生活网

什么是HPA

2023-05-05   腾讯云

Secret热更新|环球新视野

2023-05-05   腾讯云

长庆探区新型钻机破解钻井难题

2023-05-05   中国产业经济信息网

南京证券发布2022年度社会责任暨ESG报告

2023-05-05   中国产业经济信息网

新能源汽车如何助力中国汽车品牌向上

2023-05-05   中国产业经济信息网

矿用机械设备

2023-05-05   互联网

kubernetes-Affinity示例_快看点

2023-05-05   腾讯云

什么是HPA

2023-05-05   腾讯云

设计模式-原型模式示例

2023-05-05   腾讯云

中国电信:夯实国云底座,加快建设数字中国

2023-05-05   中国产业经济信息网

天天速递!全球首台可变径斜井掘进机下线

2023-05-05   中国产业经济信息网

设计模式-原型模式示例

2023-05-05   腾讯云

简讯:休闲农业促增收

2023-05-05   金台资讯

设计模式-原型模式示例

2023-05-05   腾讯云

什么是HPA

2023-05-05   腾讯云

唱响乡村“青歌会”

2023-05-05   北京青年报官网

矿物态铁

2023-05-05   互联网

Taint和Toleration

2023-05-04   腾讯云

Taint命令入门

2023-05-04   腾讯云

使用SubPath 观察

2023-05-04   腾讯云

当前最新:Taint和Toleration

2023-05-04   腾讯云

使用SubPath 天天时讯

2023-05-04   腾讯云

Volumes示例 世界热点评

2023-05-04   腾讯云

天天视点!白酒解酒的最快方法?

2023-05-04   南方养生网

货车司机 请注意,右转必停!

2023-05-04   1039调查团

Volumes示例 环球热议

2023-05-04   腾讯云

设计模式-适配器模式示例

2023-05-04   腾讯云

Copyright   2015-2022 中国行业信息网版权所有  备案号:   联系邮箱:29 59 11 57 8@qq.com