---------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
业务需求:
异步随机生成按照各个路线行驶的车辆。
例如:
由南向而来去往北向的车辆 ---- 直行车辆
由西向而来去往南向的车辆 ---- 右转车辆
由东向而来去往南向的车辆 ---- 左转车辆
。。。
信号灯忽略黄灯,只考虑红灯和绿灯。
应考虑左转车辆控制信号灯,右转车辆不受信号灯控制。
具体信号灯控制逻辑与现实生活中普通交通灯控制逻辑相同,不考虑特殊情况下的控制逻辑。
注:南北向车辆与东西向车辆交替放行,同方向等待车辆应先放行直行车辆而后放行左转车辆。
每辆车通过路口时间为1秒(提示:可通过线程Sleep的方式模拟)。
随机生成车辆时间间隔以及红绿灯交换时间间隔自定,可以设置
面向对象设计:
根据名次提炼法,很明显的,可以抽取出类:
线路(车辆依附于线路而存在), 信号灯,信号灯的控制类
分析:路上的车辆可以看做是从属于路而存在的,
同样的,信号灯也可看做是从属于路而存在的。
所以线路类应该设计成如下方式:
1.所以线路的构造方法中应有一个放车的集合,
2.检查路灯以确定是否放行车辆通过,
当路上有车的时候每过一秒检查一下此线路方向上的灯的状态,若为绿即可放行一辆车。
可通过枚举来联系路灯和线路
3.还应有一个车辆随机上路的过程
可以通过产生一个新的线程来生产所属于不同线路的随机个数的车辆
信号灯类应被设计成:
每个枚举元素对应一条线路,可以控制一个方向上的车辆
构造方法中要明确其所在的位置,和下一个放下的灯,是否是绿灯
还应该有一个亮和暗的方法
信号灯控制类:
先初始化一个方向的灯变绿
再定义定时器,通过一定时间改变灯的状态即可
主方法:生产12条线路和路灯即可