我不了解如何实现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
}
这是您的单例:一个只有一个实例的枚举。
请注意,此单例是线程安全的,而您的不是:线程安全的:两个线程可能都进入竞争状态或可见性问题,并且都创建了自己的单例实例。