老师,关于饿汉式的问题

来源:8-5 单例设计模式-饿汉式

相信光变成光

2024-04-24

看了静态内部类实现单例模式,我觉得饿汉式单例模式不能叫做饿汉式,应该还是懒汉式。
理由如下:
静态内部类InnerClass在使用时,内部类InnerClass才初始化对象,所以叫懒汉式
但是,饿汉式的实现方式同样是在使用类HungrySingleton时,才初始化对象,为啥还叫饿汉式,不叫懒汉式呢?
代码如下:
静态内部类-基于类初始化的延迟加载解决方案

public class StaticInnerClassSingleton {
    private StaticInnerClassSingleton(){

    }
    public static class InnerClass{
        private static StaticInnerClassSingleton staticInnerClassSingleton=
                new StaticInnerClassSingleton();
    }
   public static StaticInnerClassSingleton getInstance(){
        return InnerClass.staticInnerClassSingleton;
   }
}

饿汉式

public class HungrySingleton {
    private static final HungrySingleton hungrySingleton=
            new HungrySingleton();
    public static HungrySingleton getInstance(){
        return hungrySingleton;
    }
}
写回答

1回答

geelylucky

2024-05-10

同学你好,饿汉的意思是单例对象创建好后,不会立即使用(可能,不绝对),需要等待后续需要的时候才被使用,一直被饿着;懒汉的意思是不用的时候就不创建,一旦要创建这个对象,那么一定是要用的时候;

在使用HungrySingleton类时创建单例对象,有可能是调用HungrySingleton类的其他方法,单例对象被创建出来只是在触发静态对象的一个副作用;

0
0

Java设计模式精讲-Debug方式+内存分析

系统学习设计原则,设计模式,锤炼编码内功,赢取高薪Offer

3430 学习 · 407 问题

查看课程