黑马程序员_交通灯系统

------- android培训java培训、期待与您交流! ----------

 

 

1、面向对象技巧:谁拥有数据谁就对外提供操作这些数据的方法。
2、交通灯。
 思路:总共有12条路线,为了统一编程模型,可以假设每条路线都有一个红绿灯对其进行控制,右转弯的4条路线的控制灯可以假设称为常绿状态,另外,其他的8条线路是两两成对的,可以归为4组,所以,程序只需考虑图中标注了数字号的4条路线的控制灯的切换顺序,这4条路线相反方向的路线的控制灯跟随这4条路线切换,不必额外考虑。
 1.Road类编写:
 每个Road对象都有一个name成员变量来代表方向,有一个vehicles成员变量来代表方向上的车辆集合。
 在Road对象的构造方法中启动一个线程每隔一个随机的时间向vehicles集合中增加一辆车(用一个“路线名_id”形式的字符串进行表示)。
 在Road对象的构造方法中启动一个定时器,每隔一秒检查该方向上的灯是否为绿,是则打印车辆集合和将集合中的第一辆车移除掉。
   2.创建线程:
  ExecutorService pool = Executors.newSingleThreadExecutor(); 创建一个单独 的线程
  Thread.sleep((new Random().nextInt(10)+1)*1000); //使此线程暂停一会。但是 不能存在于构造方法中

   3.定时器:
  ScheduledExecutorService  timer =Executors.newScheduledThreadPool(1);
  timer.scheduleWithFixedDelay(Runnable command,long initialDelay,long  delay,TimeUnit unit)
  command - 要执行的任务。
  initialDelay - 首次执行的延迟时间。
  delay - 一次执行终止和下一次执行开始之间的延迟。
  unit - initialDelay 和 delay 参数的时间单位。
 4.Lamp类编写:
 系统中有12个方向上的灯,在程序的其他地方要根据灯的名称就可以获得对应的灯的实例对象,综合这些因素,将Lamp类用java5中的枚举形式定义更为简单。
 5.LampController类的编写
 整个系统中只能有一套交通灯控制系统,所以,LampController类最好是设计成单例。
 LampController构造方法中要设定第一个为绿的灯。
 LampController对象的start方法中将当前灯变绿,然后启动一个定时器,每隔10秒将当前灯变红和将下一个灯变绿。
 6.MainClass类的编写
 用for循环创建出代表12条路线的对象。接着再获得LampController对象并调用其start方法。

 

------- android培训java培训、期待与您交流! ---------- 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值