JAVA单例模式

1.懒汉模式:很少用到或者几乎不会用到,那么懒汉式是一个不错的选择

懒汉模式在运行的时候获取对象比较慢(因为类加载是并没有创建对象实例),但是加载类的时候比较快(因为此时不创建对象实例)

  • 懒汉模式:懒汉模式在使用时,容易引起不同步问题,所以应该创建同步"锁"
public class Cake {
    //1.构造私有化,不允许外部直接实例化对象
    private Cake(){}
    //2.声明一个私有静态的对象引用,但不实例化
    private static Cake instance;
    //3.提供获取实例的方法,同步代码块加锁,安全高效
    public static Cake getInstance(){
        if(instance==null)
            synchronized (Cake.class) {
                if(instance==null) instance = new Cake();
            }
        return instance;
    }
}
2.饿汉模式:实例在系统中经常会被用到,饿汉式是一个不错的选择

饿汉模式是在运行的时候获取对象较快(因为在加载类时就创建了对象实例),加载类的时候慢(此时还需要创建对象实例)。

  • 饿汉模式:
public class Cake{
    //1.构造私有化,不允许外部直接实例化对象
    private Cake(){}
    //2.创建一个私有的静态的实例对象,太饿了,管你要不要,先做出来吃起
    private static Cake instance = new Cake();
    //3.提供获取实例的方法
    public static Cake getInstance(){
        return instance;
    }
}

你可能感兴趣的:(JAVA单例模式)