




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
淘宝店530213测试类Testpublic class Test public static void main(String args) Lift lift=new Lift();new User(lift).gotoFloor();lift.operate();电梯类Liftimport java.util.*;public class Liftboolean doorState=true;/true开,false 关int currentFloor=1; ArrayList holdList=new ArrayList();LiftState state;public Lift()state=new Hold(this);public void setDoorState(boolean doorstate)this.doorState=doorstate;public void setState(LiftState state)this.state=state;public LiftState getState() return this.state;public void openDoor()setDoorState(true);System.out.println (电梯门已开,请抓紧进出!);public void closeDoor()setDoorState(false);System.out.println (电梯门已关,即将运行!);public void move(int from, int to) if(fromto) System.out.println(电梯现在+from+楼,即将+this.state.stateName+到+to+楼); for(int i=from+1;ito) System.out.println(电梯现在+from+楼,即将+this.state.stateName+到+to+楼); for(int i=from-1;ito;i-) System.out.println(已到达+i+楼,不停); this.currentFloor=i-1; try Thread.sleep(1000); catch (InterruptedException e) / TODO Auto-generated catch block e.printStackTrace(); public int getNextFloor()return (Integer)(holdList.iterator().next();public void operate()this.state.operate();状态类LiftStateabstract class LiftStateprotected Lift lift;String stateName;public LiftState(LiftState oldstate)this.lift=oldstate.lift;public LiftState()public void openDoor()lift.setDoorState(true);System.out.println (电梯门已开,请抓紧进出!);public void closeDoor()lift.setDoorState(false);System.out.println (电梯门已关,即将运行!);public abstract void operate();使用者类Userimport java.io.*;import java.util.Scanner;public class User Lift lift;public User(Lift lift)this.lift=lift;public void gotoFloor()Scanner sc = new Scanner(System.in);/获取键盘输入 int nextFloor=sc.nextInt();lift.holdList.add(nextFloor);System.out.println(有人要去+nextFloor+楼);就绪类Holdimport java.util.Currency;public class Hold extends LiftStatepublic Hold(Lift lift)this.lift=lift;this.stateName=就绪;public Hold(LiftState state) super(state); this.stateName=就绪;Overridepublic void operate() openDoor();/ TODO Auto-generated method stubtry Thread.currentThread().sleep(2000); catch (InterruptedException e) / TODO Auto-generated catch blocke.printStackTrace();closeDoor();int nextFloor=this.lift.getNextFloor();System.out.println(next:+nextFloor+-curent:+this.lift.currentFloor);if(nextFloorthis.lift.currentFloor)this.lift.setState(new RunUp(this);this.lift.operate();else if(nextFloorthis.lift.currentFloor) this.lift.setState(new RunDown(this); this.lift.operate();下降类class RunDown extends LiftStatepublic RunDown(LiftState state)super(state);this.stateName=上升;public void openDoor()lift.setDoorState(false);System.out.println (上升状态下严禁开门!);public void closeDoor()lift.setDoorState(false);System.out.println (上升状态下严禁开门!);Overridepublic void operate() / TODO Auto-generated method stubint nextFloor=(Integer)this.lift.holdList.iterator().next();this.lift.move(this.lift.currentFloor, nextFloor);this.lift.setState(new Hold(this);System.out.println(电梯现在已经到达+nextFloor+楼);this.lift.operate();上升类class RunUp extends LiftStatepublic RunUp(LiftState state)super(state);this.stateName=上升;public void openDoor()lift.setDoorState(false);System.out.println (上升状态下严禁开门!);public void closeDoor()lift.setDoorState(false);System.out.println (上升状态下严禁开门!);Overridepublic void operate() / TODO Auto-generated method stubint nextFloor=(Integer)this.lift.holdList.iterator().next();/System.out.println (下一个:+nextFloor);this.lift.move(this.lift.currentFloor, nextFloor);this.lift.setState(new Hold(this); System.out.println(this.lift.state.stateName);System.out.println(电梯现在已经到达+this.lift.currentFloor+楼);this.lift.holdList.remove(0);this.lift.operate();故障类class Broken extends LiftStatepublic Broken(LiftState state)super(state);this.stateName=故障;public void openDoor()lift.setDoorState(false);System.out.println (有故障!暂停使用!);public void closeDoor()lift.setDoorState(false);System.out.println (超重!);public void repair()this.lift.setState(new Hold(this);System.out.println (故障已排除!电梯准备就绪);Overridepublic void operate() / TODO Auto-generated method stubSystem.out.println (有故障!暂停使用!);/测试类public class Test public static void main(String args) Car car=new Car();Walker walker=new Walker();WalkLight wlight=new WalkLight();RoadLight rLight=new RoadLight();wlight.addObserver(walker);rLight.addObserver(car);rLight.addObserver(wlight);rLight.changeColor();交通灯类import java.util.*;public abstract class TrafficLight boolean currentColor=true; /true 绿色,false红色String lighttype; ArrayList observerList=new ArrayList(); public void addObserver(TrafficObserver observer) if(!observerList.contains(observer) observerList.add(observer); public abstract void changeColor();public void hold(long time)try Thread.currentThread().sleep(time); catch (InterruptedException e) / TODO Auto-generated catch blocke.printStackTrace();public void yellowHold(long time)System.out.println (lighttype+(currentColor?绿:红)+灯结束!马上变黄.);/this.road.paintLightColor(road.getGraphics(),Color.YELLOW,lighttype);System.out.println (lighttype+现在是黄灯! 2秒后变+(currentColor?红:绿)+.);hold(time);/等2秒 public void lightTime(long time)System.out.println (lighttype+现在是+(currentColor?绿:红)+灯!15秒后结束.);for(int i=15;i0;i-)/倒计时15秒System.out.println (lighttype+(currentColor?绿:红)+灯剩余+i+秒);hold(1000);public void notice() new Thread()public void run()for(TrafficObserver obs:observerList)obs.response(currentColor);/Thread.currentThread().yield(); .start();交通灯观察者类public interface TrafficObserver public void response(boolean color);道路灯public class RoadLight extends TrafficLightpublic RoadLight()lighttype=机动车道;public void changeColor() / TODO Auto-generated method stubyellowHold(2000);currentColor=!currentColor;notice();lightTime(20000);人行道灯public class WalkLight extends TrafficLight implements TrafficObserver public WalkLight()lighttype= 人行道;Overridepublic void changeColor() / TODO Aut
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 陀螺果育苗技术规程
- 2025年南昌县公安局招聘警务辅助人员考试笔试试题【答案】
- 2025年超铀元素及其提取设备合作协议书
- 河南大学科技成果转化基金项目申请书
- 项目策划编制指南
- 大学生寒假.实践报告(卖春联)
- 2025产科护士个人工作计划
- 2025年医用超声诊断设备项目发展计划
- 2025年太阳能电池背膜项目发展计划
- 工作坊聚焦教育技术与教学质量的双重提升
- 2024年安徽省合肥市北城片区七年级数学第一学期期末学业水平测试试题含解析
- 2025至2030中国铜冶炼行业发展现状及应用需求现状分析报告
- 农业保险培训课件
- 茶园租赁合同(含茶叶加工销售)
- 2025至2030全球及中国浮式液化天然气行业产业运行态势及投资规划深度研究报告
- 药品连锁总部管理制度
- 2025至2030中国家用清洁工具行业发展趋势分析与未来投资战略咨询研究报告
- 20250617国金证券机器人行业研究垂直领域具身智能机器人的野望416mb
- 数字时代亲属关系重构-洞察及研究
- 管理类本科论文
- 招商人员笔试题目及答案
评论
0/150
提交评论