交通灯管理系统 【总结】

新写的总结。虽然在项目下也添加了,但为了查看清晰起见,就这里再发一贴。

总结:

     首先把老师的一句比较经典的话写下来:谁拥有数据,谁有的提供操作这些数据的方式    !

   问题解决:

            交通灯看似一个比较复杂的问题,经过一步一步的细化分析,最终将题目分解为多个类,每个类设置不同的属性与动作。在这里最难设计的一个类是路灯类。一般人们不会去想到用枚举(一般人思维:枚举就是设置数据常量集合的)。其实不然,枚举也可以自己的构造函数,自己的方法,自己的属性。在这里用枚举来表示Lamp可谓是:恰到好处 !不仅节省了代码量,而且也使得思路更加清晰。

         还有一个比较难以让人理解的问题是:为什么前四个灯是这样初始化的,

S2N("N2S","S2W",false), S2W("N2E","E2W",false), E2W("W2E","E2S",false), E2S("W2N","S2N",false),   //这四个形成一个循环

紧接着的相对的四个灯却是:

 

N2S(null,null,false), N2E(null,null,false),W2E(null,null,false), W2N(null,null,false), 

 

      如果出现这个问题:说明你没有看清老师前期的分组,首先需要控制的灯有8个,这8个灯分成四组。关键就在这四组上,四组中每组的成员中有两个,两个中有一个设置上自己的相对路灯即可。也可以这样理解,可以把每组的路灯一个叫做主灯,一个叫做次灯,主灯可以控制次灯(内部有次灯的引用)。

除此还有一个要点不知大家注意了没有:

 

S2N("N2S","S2W",false), S2W("N2E","E2W",false), E2W("W2E","E2S",false), E2S("W2N","S2N",false),   //这四个形成一个循环

       我后面注释上了:这四个形成一个循环。即这四个主灯内部通过设置下一个主灯,来实现循环。即每个灯构造函数第二个参数就是下一个主灯,四组形成一个循环。而相对的灯即次灯通过主灯来设置。

 

还要强调一点:这里是通过枚举类实现了数据的共享。枚举是静态final的,保证每次通过Lamp得到的等都是同一个灯 !这样就能保证操作的是同一个灯。。

 

自己面向对象的理解:

      Lamp类:路灯,大家都知道每个路灯都有暗亮吧,再者根据“谁拥有数据,谁就得拥有操作这些数据的方式”。很明显每个灯都得有自己变亮,变暗的方式,自己也要知道自己是暗是亮。

 

LampControl,主要是启动路灯,并且用新的线程控制路灯的相互轮番暗亮,这里使用定时器来控制路灯。

 

Road类:每条路上都有很多车,有自己的路灯。这样我们可以得到路上要有车的集合,和路灯这两个成员变量。这里路灯是用了灯的名字代替的,用String代替操作起来也方便,只要能通过灯的名字 得到相应的灯即可。 路上面肯定是每隔一段时间都会有很多车来,很多车走。很显然要启动两个线程,分别增加和减少本条路上的车辆。

 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值