




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
状态模式类图代码public interface State public void insertQuarter();public void ejectQuarter();public void turnCrank();public void dispense();public class SoldOutState implements State GumballMachine gumballMachine;public SoldOutState(GumballMachine gumballMachine)this.gumballMachine=gumballMachine;public void insertQuarter()System.out.println(You cant inserted a quarter,the machine is sold out);public void ejectQuarter()System.out.println(You cant ejest,you havent inserted a quarter yet);public void turnCrank()System.out.println(You turned,but there are no gumballs);public void dispense()System.out.println(No gumball dispensed);public class SoldState implements State GumballMachine gumballMachine;public SoldState(GumballMachine gumballMachine)this.gumballMachine=gumballMachine;public void insertQuarter()System.out.println(Please wait,were already giving you a gumball);public void ejectQuarter()System.out.println(Sorry,you already turned the crank);public void turnCrank()System.out.println(Turning twice doesnt get you another gunball!);public void dispense()gumballMachine.releaseBall();if(gumballMachine.getCount()0)gumballMachine.setState(gumballMachine.getNoQuarterState();elseSystem.out.println(Oops,out of gumballs!);gumballMachine.setState(gumballMachine.getSoldOutState();public class HasQuarterState implements State GumballMachine gumballMachine;public HasQuarterState(GumballMachine gumballMachine)this.gumballMachine=gumballMachine;public void insertQuarter()System.out.println(You cant inserted anther quarter);public void ejectQuarter()System.out.println(Quarter returned);gumballMachine.setState(gumballMachine.getNoQuarterState();public void turnCrank()System.out.println(You turned.);gumballMachine.setState(gumballMachine.getSoldState();public void dispense()System.out.println(No gumball dispensed);public class NoQuarterState implements State GumballMachine gumballMachine;public NoQuarterState(GumballMachine gumballMachine)this.gumballMachine=gumballMachine;public void insertQuarter()System.out.println(You inserted a quarter);gumballMachine.setState(gumballMachine.getHasQuarterState();public void ejectQuarter()System.out.println(You havent inserted a quarter);public void turnCrank()System.out.println(You turned,but theres no quarter);public void dispense()System.out.println(You need to pay first);5public class GumballMachine State soldOutState;State noQuarterState;State hasQuarterState;State soldState;State state=soldOutState;int count=0;public GumballMachine(int numberGumballs)soldOutState=new SoldOutState(this);noQuarterState=new NoQuarterState(this);hasQuarterState=new HasQuarterState(this);soldState=new SoldState(this);this.count=numberGumballs;if(numberGumballs0)state=noQuarterState;public void insertQuarter()state.insertQuarter();public void ejectQuarter()state.ejectQuarter();public void turnCrank()state.turnCrank();state.dispense();void setState(State state)this.state=state;void releaseBall()System.out.println(A gumball comes rolling out the slot.);if(count!=0)count-;public State getSoldOutState()return soldOutState;public State getNoQuarterState()return noQuarterState;public State getHasQuarterState()return hasQuarterState;public State getSoldState()return soldState;public int getCount()return count;public String toString()if(count=0)return Mighty Gumball,Inc.nJava_enabled Standing Gumball Model #2004nInventory: +count+gumballsnMachine is sold outn;return Mighty Gumball,Inc.nJava_enabled Standing Gumball Model #2004nInventory: +count+gumballsnMachine is waiting for quartern;public class GumballMachineTestDrive public static void main(Stringargs)GumballMachine gumballMachine=new GumballMachine(5);System.out.println(gumballMachine);gumballMachine.insertQuarter();gumballMachine.turnCrank();System.out.println(gumballMachine);gumballMachine.insertQuarter();gumballMachine.ejectQuarter();gumballMachine.turnCrank();System.out.println(gumballMachine);gumballMachine.insertQuarter();gumballMachine.turnCrank();gumballMachine.insertQuarter();gumballMachine.turnCrank();gumballMachine.ejectQuarter();System.out.println(gumballMachine);gumballMachine.insertQuarter();gumballMachine.insertQuarter();gumballMachine.turnCrank();gumballMachine.insertQuarter();gumballMachine.turnCrank();gumballMachine.insertQuarter();gumballMachine.turnCrank();System.out.println(gumballMachine);测试结果Mighty Gumball,Inc.Java_enabled Standing Gumball Model #2004Inventory: 5gumballsMachine is waiting for quarterYou inserted a quarterYou turned.A gumball comes rolling out the slot.Mighty Gumball,Inc.Java_enabled Standing Gumball Model #2004Inventory: 4gumballsMachine is waiting for quarterYou inserted a quarterQuarter returnedYou turned,but theres no quarterYou need to pay firstMighty Gumball,Inc.Java_enabled Standing Gumball Model #2004Inventory: 4gumballsMachine is waiting for quarterYou inserted a quarterYou turned.A gumball comes rolling out the slot.You inserted a quarterYou turned.A gumball comes rolling out the slot.You havent inserted a quarterMighty Gumball,Inc.Java_enabled Standing Gumball Model #2004Inventory: 2gumballsMachine is waiting for quarterYou inserted a quarterYou cant inserted anther quarterYou turned.A gumball comes rolling out the slot.You inserted a quarter
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中小企业人才激励方案设计
- 电子监控保密规定
- 交通运输企业运营管理规范
- 介绍我的最爱物品说明文15篇
- 以挫折为话题的作文10篇
- 知识产权保护承诺书初探(4篇)
- 大数据分析实战案例及操作指南
- 小学数学教学说课稿与教材分析
- 个人培训提升计划实施承诺书(9篇)
- 企业质量管理手册更新版
- 《PLC电气控制技术》课件(共九章)
- 反洗钱系统培训
- 《军品价格管理办法》
- 广东省中山市华辰实验中学2025-2026学年高三上学期开学考英语试题(含答案)
- 基孔肯雅热主题班会课件
- 麻醉恢复室护理要点
- 心力衰竭的全程管理
- 初中英语英语3500个单词分类大全
- 数学评比活动方案
- 三年级上册《快乐读书吧》阅读练习题
- TCPUMT 034-2025 工业数字孪生 数字模型与数据集成交换要求
评论
0/150
提交评论