命名模式首先需要一个只有单一方法的接口,然后从该接口实现具有各自不同的行为的多个子类,下面给出一个样例。
package java191;
import java.util.EnumMap;
import java.util.Map;
import static java191.AlarmPoints.*;
interface Command {void action();}
public class EnumMaps {
public static void main(String[] args) {
EnumMap<AlarmPoints, Command> em
= new EnumMap<AlarmPoints, Command>(AlarmPoints.class);
em.put(AlarmPoints.KITCHEN, new Command() {
@Override
public void action() {
System.out.println("KITCHEN fire!");
}
});
em.put(AlarmPoints.BATHROOM, new Command() {
@Override
public void action() {
System.out.println("Bathroom alert");
}
});
for(Map.Entry<AlarmPoints, Command> e : em.entrySet()){
System.out.println(e.getKey()+": ");
e.getValue().action();
}
try {
em.get(UTILITY).action();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
package java191;
public enum AlarmPoints {
STAIR1, STAIR2, LOBBY, OFFICE1, OFFICE2, OFFICE3, OFFICE4,
BATHROOM, UTILITY, KITCHEN
}
EnumMap是一种特殊的Map,它要求其中的键(key)必须来自一个enum.