------- android培训、java培训、期待与您交流! ----------
张老师对于交通灯管理系统的讲解很详细,但是由于我是零基础自学,所以对于里面不少地方都认知的不是很透彻。于是采用自己的方式,把里面的内容分解成自己能懂的部分。
1.分析问题要善于画图,让抽象的问题具体化。
2.面向对象设计时采取的原则:谁拥有数据,谁就提供针对这些数据的操作方法。
3.在分析交通灯系统时,首先抽取其中关键要素:交通灯,路,车。三者中的车可以认为是路的“元素”,车的通过和增加都是由路负责管理的。而每一个十字路口的放行与否,都是通过交通灯控制的。路和灯可以看作两个类,他们两者应该是归属的关系,一个十字路口“拥有”一个交通灯系统。由于车辆向右是永远放行的,而相反方向的灯的变化是完全相同的,这样其实一个路口的交通等的状态就只有4种了,而且这四种同一时刻只有一个是放行的状态。
4,分析需要用到哪些方面的知识。
首先, 所有道路上车辆对象都要封装到一个集合中,需要运用到集合中的操作方法。
其次,在Road对象的构造方法中启动一个线程每隔一个随机的时间向vehicles集合中增加一辆车(用一个“路线名_id”形式的字符串进行表示)。这里涉及到多线程技术和匿名内部类的运用。
另外系统中有12个方向上的灯,在程序的其他地方要根据灯的名称就可以获得对应的灯的实例对象,所以需要用到枚举。
最后,整个系统中只能有一套交通灯控制系统,所以,LampController类最好是设计成单例,这里又运用到了单例设计模式。