黑马程序员_交通灯管理系统
来源:互联网 发布:知乎live是什么 编辑:程序博客网 时间:2024/05/16 17:20
-----------android培训、java培训、java学习型技术博客、期待与您交流! ------------
要求:模拟实现十字路口的交通灯管理系统逻辑
思考:
1. 与十字路口相关的物体有:公路、信号灯、车辆、交通灯控制系统;
2. 通过十字路口,有十二种行驶方式,每种行驶方式都有车辆采用,不断重复驶向十字路口--驶离十字路口的动作,当然车辆是不确定时间增加的,绿灯状态下,车才能通过十字路口;
3. 信号灯有两个状态,绿灯和红灯,可用逻辑值表示这两个状态,有在红绿灯间切换的行为;
4. 车辆有许多个,在十字路口处有红灯等待和绿灯开动两个状态;
5. 一个十字路口只存在一套交通灯控制系统,它实现信号灯的红绿灯切换行为,因右转的车辆不用信号灯控制,则十二个行驶方向只需要8个信号灯。鉴于信号灯是成对地变化的,故实际上只用操作其中四盏即可。
解题思路:
1. 需要创建三个对象,车可用字符串替代,不能通过十字路口时,其行驶方向上会增加该车,驶过十字路口时会该车会驶离,用字符串的增加与删除即可实现这一逻辑,不用创建对象;
2. 创建Road类,用该类实例表示车辆行驶方式,每种行驶方式上车的数量不确定,应使用集合存储车,即字符串,需实现增加和删除字符串的方法;而行驶方式间相互独立,故需创建独立线程。而车驶来与驶离的动作同时存在,每个实例中需建立两个线程,一线程保证不定时地有车要通过十字路口,另一线程每隔一段时间检查信号灯状态,保证绿灯时车通过十字路口;
3. 创建Lamp类,经过之前分析得知需要创建8个信号灯实例,建议使用枚举,为了统一,向右转的行驶方向也设置信号灯,不过信号灯一直为绿灯;因信号灯成对变化,故信号灯须标记其相反方向信号灯,信号灯间交替变化,该灯变红后,必然有灯变绿,故信号灯也应标记接下来变化的信号灯,只需让4个信号灯记录相反方向和接下来的信号灯,故类中有三个成员,两个记录信号灯,一个标记红绿灯状态,对外提供三个方法:检查红绿灯状态的方法,变绿灯的方法,变红灯的方法;
4. 创建LampController类,因其唯一性,应使用单例设计模式。它实现了12个信号灯的交替控制,在该类中须记录当前控制的信号灯,系统启动后,当前灯变绿,每隔一段时间,当前控制的信号灯会发生变化。
5. 在主程序中,创建十二种行驶方式,启动一套控制系统。
要点:
1. 枚举(因枚举元素只能定义后才能保用,在构造函数中用字符串形式表示反方向和接下来的信号灯);
2. 多线程:线程池和定时器;
3. 单例设计模式;
4. 面向对象设计重要经验:谁拥有数据,谁就对外操作操作这些数据的方法。
- 黑马程序员_交通灯管理系统
- 黑马程序员_交通灯管理系统
- 黑马程序员_交通灯管理系统笔记
- 黑马程序员_交通灯管理系统
- 黑马程序员_交通灯管理系统
- 黑马程序员_交通灯管理系统
- 黑马程序员_交通灯管理系统
- 黑马程序员_交通灯管理系统
- 黑马程序员_交通灯管理系统
- 黑马程序员_交通灯管理系统
- 黑马程序员_交通灯管理系统
- 黑马程序员_交通灯管理系统
- 黑马程序员_交通灯管理系统
- 黑马程序员_交通灯管理系统
- 黑马程序员_交通灯管理系统
- 黑马程序员_交通灯管理系统小结
- 黑马程序员_交通灯管理系统
- 黑马程序员_交通灯管理系统
- window.showModalDialog以及window.open用法简介
- Oracle 小结 目录
- DD-WRT无线路由绝招DHCP转发
- read(byte[] buffer, int offset, int length)详解
- 声讨 堆栈 的翻译
- 黑马程序员_交通灯管理系统
- 比特币之父:中本聪是何许人也?
- Tomcat配置多域名 Alias
- 百度地图在web项目中的使用
- Mahout安装与配置,以及结果查看
- 人月神话
- ds
- 台式电脑Xp系统u盘文件如何恢复
- 黑马程序员-面试技巧