交通灯系统

来源:互联网 发布:fanuc数控系统a角编程 编辑:程序博客网 时间:2024/06/05 06:54

  我这两天心情不太好,因为账号被封了3天,这就意味着我的技术分不够,42期是没希望了。找了一下原因,可能是因为我那个“问了一下复试的时候能不能用Eclipse”的帖子被当做水贴,然后被禁言了。是我自己不知道技术分要花那么多时间去拿,所以一直都没在黑马论坛上注册。就算是没什么希望,还是继续走下去,为了之前不断努力的自己。

  这一节讲的是交通灯系统,看完老师的视频,其实还是蛮震撼我的,不是因为技术,而是这种面向对象的思想。利用这种思想去把复杂的问题简单化。

  当然也有新的知识点,就是线程池,其实我不太明白当单独开一个线程的时候为什么还要用线程池技术。看了一下论坛,里面说是因为高效,但是讲得不具体,说是节省了开辟和结束的时间,我也就听听。

  我其实更多思考的是,老师为什么要把这个事物用这个类型的对象来用。交通灯里面有3种不同类型的灯,但是老师不把灯作为对象而是把灯的转换作为一个对象。非常巧妙的是这样就跟路连起来了。更大的可能是老师把每一个方向的路当做对象,所以才有了灯转换的对象。可不可以这样说,当我们遇到比较复杂的业务逻辑的时候,我们可以把每一种变化的情况作为一个对象。

   我的代码跟老师的差不多,就是灯的类不太一样。因为我觉得我的改变更符合我的思维。

public enum Lamp {
 S2N("N2S","S2W",false),S2W("N2E","E2W",false),E2W("W2E","E2S",false),E2S("W2N","S2N",false),
 N2S("S2N","N2E",false),N2E("S2W","W2E",false),W2E("E2W","W2N",false),W2N("E2S","N2S",false),
 S2E(null,null,true),E2N(null,null,true),N2W(null,null,true),W2S(null,null,true);
 
 private String opp;
 private String next;
 public boolean lighted;
 
 Lamp(String opp,String next,boolean lighted) {
  this.opp = opp;
  this.next = next;
  this.lighted = lighted;
 }
 
 void shine() {
  this.lighted = true;
  Lamp.valueOf(opp).lighted = true;
  System.out.println(this + " and " + opp + " turns into green");
 }
 
 Lamp down() {
  this.lighted = false;
  Lamp.valueOf(opp).lighted = false;
  Lamp nextLamp = Lamp.valueOf(next);
  nextLamp.shine();
  System.out.println(this + " and " + opp + " turns into down");
  return nextLamp;
 }
}

其他代码就不贴了,太长。

0 0