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;
    }
}

还有一些其他实现方法啦,一个就是枚举方法,我不太会用,就不写啦。

原文地址:https://www.cnblogs.com/ITyannic/p/10705225.html