状态模式代码及类图.doc_第1页
状态模式代码及类图.doc_第2页
状态模式代码及类图.doc_第3页
状态模式代码及类图.doc_第4页
状态模式代码及类图.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

状态模式类图代码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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论