package com.huawei.c3.adapter;
public class Singleton
{
//声明类实例,在类加载时进行初始化。
private final static Singleton instance=new Singleton();
private Singleton(){
}
public static Singleton getInstance(){
return instance;
}
}
懒加载实现:
package com.huawei.c3.adapter;
public class LazySingleton
{
private static volatile LazySingleton instance=null;
//防止在外部被实例化
private LazySingleton(){
}
public static LazySingleton getInstance(){
//double check mode
if(instance==null)
synchronized(LazySingleton.class){
if(instance==null){
//采用volatile关键字,用途主要在于防止还没有从主存里面读取数据
instance=new LazySingleton();
}
}
return instance;
}
}
枚举同样也是单例的一种实现形式:
package com.huawei.c3.adapter;
public enum State
{
OPEN,
CLOSED,
RUN,
STOPPED
}
内部类实现单例:
package com.huawei.c3.adapter;
public class InnerSingleton
{
private InnerSingleton()
{
}
public static InnerSingleton getInstance(){
return NestClass.instance;
}
static class NestClass
{
private static InnerSingleton instance = new InnerSingleton();
}
}