枚举类型确保JVM中仅存在一个常量实例。

应用枚举类实现单例模式,十分优越。

public enum PizzaDeliverySystemConfiguration {    INSTANCE;    PizzaDeliverySystemConfiguration() {        // Initialization configuration which involves        // overriding defaults like delivery strategy    }     private PizzaDeliveryStrategy deliveryStrategy = PizzaDeliveryStrategy.NORMAL;     public static PizzaDeliverySystemConfiguration getInstance() {        return INSTANCE;    }     public PizzaDeliveryStrategy getDeliveryStrategy() {        return deliveryStrategy;    }}PizzaDeliveryStrategy deliveryStrategy = PizzaDeliverySystemConfiguration.getInstance().getDeliveryStrategy();

应用枚举类实现策略模式也十分优越。

public enum PizzaDeliveryStrategy {    EXPRESS {        @Override        public void deliver(Pizza pz) {            System.out.println("Pizza will be delivered in express mode");        }    },    NORMAL {        @Override        public void deliver(Pizza pz) {            System.out.println("Pizza will be delivered in normal mode");        }    };     public abstract void deliver(Pizza pz);}//给pizza类增加上面的办法public void deliver() {    if (isDeliverable()) {        PizzaDeliverySystemConfiguration.getInstance().getDeliveryStrategy()          .deliver(this);        this.setStatus(PizzaStatus.DELIVERED);    }}