终于把前面的东西看完了,今天在看张老师的交通灯管理系统。个人总结了一下,随着老师的激情的讲课,也激情的听了一天,连饭都忘了吃。说的有点夸张了。原本对于我目前水平,做这样的项目简直是可望而不可及的。但是随着老师的讲课,思路也变的清晰了好多,但也没说完全能理解。之后手动的编写仍是一个重要的锻炼。课堂知识总汇固然重要,但更多我感受的是在课堂中老师不但幽默而又激情的讲课,且不望给我们这些刚起步的菜鸟们训示。
1,人的精力是有限的,要把精力留在自己喜欢的事情上。
2,环境能改变一个人
3,对每个程序员来说,没有学不会的技术,只是没有那么多的时间与精力!如果能用最少的时间学透自己想要的技术,是程序员感到最幸福的事情!
4,要想做成一番大事,必须珍惜和保护好自己的身体。即使你学富五车,才高八斗,如果没有好的身体,等到真正要施展抱负,想去实现宏伟大业时,这往往都需要坚持和耐力,可能在接近成功时,就壮志未酬身已衰,出师未捷身先卒。
面向对象:谁拥有数据谁就对外提供操作这些数据的方法。
Road类编写:
创建线程:
ExecutorService pool = Executors.newSingleThreadExecutor(); 创建一个单独的线程
Thread.sleep((new Random().nextInt(10)+1)*1000); //使此线程暂停一会。但是不能存在于构造方法中
定时器:
ScheduledExecutorService timer =Executors.newScheduledThreadPool(1);
timer.scheduleWithFixedDelay(Runnable command,long initialDelay,long delay,TimeUnit unit)
command - 要执行的任务。
initialDelay - 首次执行的延迟时间。
delay - 一次执行终止和下一次执行开始之间的延迟。
unit - initialDelay 和 delay 参数的时间单位。
Lamp类编写:
这里使用到了枚举,把12个路口定义为枚举变量。只要能够理清思路,这个类编写起来不算太难。
张老师这里为了能够让大家加深印象,还故意露了一点小错。对应的灯(opposite),这个定义为Lamp类型,那么在使用的时候就遇到了问题了。这里张老师使用的是传递对应的灯的名字作为参数,这样就不违背先定义、后使用的规则了。
逻辑是这样的:把这个路口的灯变绿时,那么对应的路口也变绿。当这个路口的灯变红时,顺便把对应路口的灯也变红,随之将下一个路口的灯变绿(但是这里要考虑有没有下一个路口的灯,像右转弯的就没有下一个路口的灯,张老师把它看作是一直是绿灯)。
LampController类编写:
逻辑:
指定某一个路口的灯为当前正在显示的灯,并通过定时器来控制灯的轮换。