交通灯管理系统Lamp类

来源:互联网 发布:篆刻工具套装价格淘宝 编辑:程序博客网 时间:2024/06/05 18:25
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() {}}

0 0
原创粉丝点击