我这两天心情不太好,因为账号被封了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;
}
}
其他代码就不贴了,太长。