单例设计模式(饿汉式与懒汉式)

单例设计模式:保证类在内存中只有一个对象。

单例设计模式,首先要私有构造方法,防止被实例化多个对象。其次要在类中创建自己的对象,而且要对外提供这个对象。

1.饿汉式

顾名思义,就是一上来就创建对象的意思

class Singleton{
    // 私有构造方法,防止创建对象
    private Singleton(){}
    // 创建本类对象
    private static Singleton s = new Singleton();
    // 对外提供公共的访问方法
    public static Singleton getInstance() {
        return s;
    }
}

2.懒汉式

顾名思义,就是调用时才创建对象的意思

class Singleton{
    // 私有构造方法,防止创建对象
    private Singleton(){}
    private static Singleton s;
    // 对外提供公共的访问方法
    public static Singleton getInstance() {
        if (s == null){                   // 保证对象是唯一的
            s = new Singleton();
        }
        return s;
    }
}

一般都会用的是饿汉式。饿汉式是一开始就创建对象的,虽然会消耗一点内存,但是效率高。而懒汉式是等到调用才创建对象,节省这么一点内存空间没什么实际作用。

而且针对上面写的懒汉式,线程不安全。可能会创建多个对象。写成线程安全的话,效率更加低,所以一般不用。

原文地址:https://www.cnblogs.com/chichung/p/10288596.html