java设计模式--单例模式

Posted 隐林

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
    }
}

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

以上是关于java设计模式--单例模式的主要内容,如果未能解决你的问题,请参考以下文章

java 单例模式这个要怎么理解?

Java设计模式--单例模式(代码详解懒汉饿汉模式)

Java中的单例模式

Java设计模式之单例模式

Java 设计模式——单例模式 理论代码相结合

Java模式设计之单例模式(二)