java设计模式--单例模式
所谓单例模式就是只能有一个实例。如何只有一个实例呢?就是不能创建更多的实例,所以构造函数一般私有化,不能new一个新的对象,提供一个访问方法,只能通过这个访问点获取到唯一的对象实例。
常见实现方式有两种:懒汉模式和饿汉模式。
懒汉模式:就是很懒咯,不是一开始就装载好,而是你要用的时候我再创建。
eg:
/** * 单例模式:懒汉模式 * * @author yannic * */ public class SingleInstance { //volatile修饰,禁止指令重拍 private static volatile SingleInstance singleInstance; // 私有化构造器,防止外部的类调用创建新对象 private SingleInstance() { } public static SingleInstance getInstance() { //double-check:双重检查 if (singleInstance == null) { synchronized (SingleInstance.class) { if (singleInstance == null) { singleInstance = new SingleInstance(); } } } return singleInstance; } }
饿汉模式:就是很急迫嘛,一开始类装载的时候就创建好这个唯一的实例对象了。
/** * 单例模式:饿汉模式 * * @author yannic * */ public class Singleton { //类加载时就初始化 private static final Singleton singleton = new Singleton(); //私有化构造器 private Singleton() { } public static Singleton getInstance() { return singleton; } }
还有一些其他实现方法啦,一个就是枚举方法,我不太会用,就不写啦。