package com.mth.bean;
/*
*灯类 枚举
*
* 12个灯
* S2N,S2W,E2W,E2S,
* N2S,N2E,W2E,W2N,
* S2E,E2N,N2W,W2S;
*
*
*
* */
public enum Lamp {
S2N("N2S", "S2W", false), S2W("N2E", "E2W", false), E2W("W2E", "E2S", false), E2S(
"W2N", "S2N", false), N2S(null, null, false), N2E(null, null, false), W2E(
null, null, false), W2N(null, null, false), S2E(null, null, true), E2N(
null, null, true), N2W(null, null, true), W2S(null, null, true);// 全部是右转的灯
// 常绿
private boolean lighted; // 灯是否是亮的
private String opposite; // 对应的灯也是Lamp类型
private String next;// 下一个灯
// 有参构造第一个参数 是对应的灯 第二个参数是下一个灯 第三个参数是是否是亮的
private Lamp(String opposite, String next, boolean lighted) {
this.opposite = opposite;
this.next = next;
this.lighted = lighted;
}
public boolean isLighted() {// 提供一个方法 看这个灯的状态
return lighted;
}
// 灯变绿的时候把对应的灯也变绿
public void light() {
this.lighted = true;
if (opposite != null) {// 有对应的灯的时候才点亮 东有对应的灯是西 西没有对应的灯
Lamp.valueOf(opposite).light();
}
System.out.println(name() + " lamp is green,下面总共应该有6个方向能看到汽车穿过!");
}
// 灯变红的时候把对应的灯也变红
public Lamp balckout() {
this.lighted = false;
if (opposite != null) {// 当自己变红的时候 把对应的灯也变红
Lamp.valueOf(opposite).balckout();
}
// 同时把下一个灯变绿
// 把这个灯返回给控制器 告诉控制器 现在绿的灯是哪一个 控制器下一步来变红
Lamp nextLamp = null;
if (next != null) {
nextLamp = Lamp.valueOf(next);
System.out.println("绿灯从" + name() + "-------->切换为" + next);
nextLamp.light();
}
return nextLamp;
}
// 私有无参构造
private Lamp() {
}
}
交通灯管理系统Lamp类
最新推荐文章于 2021-02-28 10:44:40 发布