本文共 1713 字,大约阅读时间需要 5 分钟。
1.立即加载的单例模式
public class Singleton {private static Singleton instance=new Singleton();private Singleton() {}public static Singleton getInstance() {return instance;}}
2.延迟加载的单例模式
public class Singleton {private static Singleton instance;private Singleton() {}public static Singleton getInstance() {if(null!=instance) {}else {synchronized(Singleton.class) {if(null==instance) {instance=new Singleton();}}}return instance;}}
3.使用静态内置类实现单例模式,对序列化对象无能为力
public class Singleton {private Singleton() {}private static class SingletonHandle{private static Singleton Instance=new Singleton();}public static Singleton getInstance() {return SingletonHandle.Instance;}}
4.序列化和反序列化的单例模式实现
import java.io.ObjectStreamException;import java.io.Serializable;public class Singleton implements Serializable{private static final long serialVersionUID = 282571242107328345L;private Singleton() {}private static class SingletonHandle{private static Singleton Instance=new Singleton();}public static Singleton getInstance() {return SingletonHandle.Instance;}protected Object readResolve() throws ObjectStreamException{return SingletonHandle.Instance;}}
5.使用static代码块实现单例模式
public class Singleton{private static Singleton instance;private Singleton() {}static {instance=new Singleton();}public static Singleton getInstance() {return instance;}}
6.完善使用enum枚举实现单例模式
public class Singleton{public enum SingletonEnum{singletonEnum;private Singleton instance;private SingletonEnum() {instance=new Singleton();}public Singleton getInstance() {return instance;}}public static Singleton getInstance() {return SingletonEnum.singletonEnum.getInstance();}}
这几种单例模式中,前三种比较多见。
转载地址:http://ubvdi.baihongyu.com/