黑马程序员技术交流社区

标题: 交通灯有个地方不理解,做过这个项目的人进 [打印本页]

作者: 杨天皓    时间: 2012-6-15 14:16
标题: 交通灯有个地方不理解,做过这个项目的人进
写过这个项目的人代码都有。下面这段是关灯的一个方法

public Lamp blackOut() {
                lighted = false;
                System.out.println(this+"  的红灯亮了");
                if (oppositeLighted != null) {
                        Lamp.valueOf(oppositeLighted).blackOut();
                }
                Lamp nextLamp = null;
                if(nextLight!=null){
                        nextLamp = Lamp.valueOf(nextLight);
                        nextLamp.light();
                }
               
                return nextLamp;
               
        }


public class LampController {
       
        private Lamp controlLamp= null;
       
        public LampController(){
                controlLamp = Lamp.S2N;
                controlLamp.light();
                ScheduledExecutorService timer = Executors.newSingleThreadScheduledExecutor();
               
                timer.scheduleAtFixedRate(
                                new Runnable(){

                                        @Override
                                        public void run() {
                                                // TODO Auto-generated method stub
                                                controlLamp = controlLamp.blackOut();                                        }
                                       
                                },
                                10,
                                10,
                                TimeUnit.SECONDS);
               
        }

}

想了很久都不太明白我用红色标记的那个地方,为什么要用个对象来接收。能把逻辑详细的讲解一下吗?
作者: 张_涛    时间: 2012-6-15 14:23
首先、明确一点:需要让交通灯循环的亮、灭
其次、当你关掉一个灯的时候需要使得下一个灯亮,也就是nextLamp.light();
如果你没有对象来接受的话,那么你处理了一个灯的逻辑之后,怎么去寻找下一个灯?
于是,老师就在处理完一个灯后,返回下一个灯,那么从而可以实现循环了。

作者: 黄奕豪    时间: 2012-6-15 16:44
这个跟集合的remove方法一样,remove是移除它就是为了用它,而这里关掉它就是为了让下一个灯打开~~这两个方法很类似~~~
作者: 杨天皓    时间: 2012-6-15 17:58
黄奕豪 发表于 2012-6-15 16:44
这个跟集合的remove方法一样,remove是移除它就是为了用它,而这里关掉它就是为了让下一个灯打开~~这两个方 ...

不愧是高手,你这一说,我就有点明白了。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2