饿汉式单例和懒汉式单例

当我们想要一个类只产生一个实例化对象时,就需要用到单例模式,单例设计模式分为两种:饿汉式和懒汉式。

1 饿汉式单例

当用到这个类时,不管是否需要一个对象都会创建一个实例化对象

public class Singleton {
    private final static Singleton INSTANCE = new Singleton();

    private Singleton(){
    }

    public static Singleton getInstance(){
        return INSTANCE;
    }

    public static void main(String[] args) {
        System.out.println(Singleton.getInstance() == Singleton.getInstance());
    }
}

2 懒汉式单例

当需要实例化对象时,才会为你创建一个对象
需要注意的是,懒汉式存在多线程安全问题

public class Singleton {
    private static Singleton instance;

    private Singleton(){
    }

    public static Singleton getInstance(){
        if(instance == null){
            instance = new Singleton();
        }
        return instance;
    }

    public void println(){
    };

    public static void main(String[] args) {
        Singleton singleton = null;
        singleton = Singleton.getInstance();
        singleton.println();
    }
}

你可能感兴趣的:(饿汉式单例和懒汉式单例)