我不了解如何实现Enum模式的Singleton版本。下面是使用Singleton模式实现“传统”方法的示例。我想将其更改为使用Enum版本,但不确定如何。

public class WirelessSensorFactory implements ISensorFactory{

    private static WirelessSensorFactory wirelessSensorFactory;

    //Private Const
    private WirelessSensorFactory(){
        System.out.println("WIRELESS SENSOR FACTORY");
    }

    public static WirelessSensorFactory getWirelessFactory(){

        if(wirelessSensorFactory==null){
            wirelessSensorFactory= new WirelessSensorFactory();
        }

        return wirelessSensorFactory;
    }

}

最佳答案

public enum WirelessSensorFactory {
    INSTANCE;

    // all the methods you want
}

这是您的单例:一个只有一个实例的枚举。

请注意,此单例是线程安全的,而您的不是:线程安全的:两个线程可能都进入竞争状态或可见性问题,并且都创建了自己的单例实例。

07-25 22:33