Java设计模式-单例模式-饿汉式(静态变量)

步骤如下:

1)构造器私有化(防止new)
2)类的内部创建对象
3)向外暴露一个静态的公共方法,getInstance

public class SingletonTest01 {
    public static void main(String[] args) {
        Singleton01 instance  = Singleton01.getInstance();
        Singleton01 instance01 = Singleton01.getInstance();
        System.out.println(instance == instance01);
        System.out.println("instance,hashCode=" + instance.hashCode());
        System.out.println("instance01,hashCode=" + instance01.hashCode());


    }
}
class Singleton01{
    private Singleton01(){};
    private static Singleton01 instance = new Singleton01();
    public static Singleton01 getInstance(){
        return instance;
    }
}

// 运行结果
true
instance,hashCode=1846274136
instance01,hashCode=1846274136

优缺点说明

1)优点:这种写法比较简单,就是在类装载的时候就完成实例化,避免了线程同步问题

2)缺点:在类装载的时候就完成实例化,没有达到懒加载的效果。如果从始至终从未使用过这个实例,则会造成内存的浪费

3)这种方式基于classloader机制避免了多线程的同步问题,不过,instance在类装载时就实例化,在单例模式种大多数都是调用getInstance方法,但是导致类装载的原因都很多种,因为不能确定有其他的方式(或者其他的静态方法)大致类装载,这时候初始化instance就没有达到lazy loading的效果

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 单例模式(Singleton Pattern)是 编程语言中最简单的设计模式之一。这种类型的设计模式属于创建型模式...
    Hi夜城阅读 3,308评论 1 10
  • 一.什么是单例模式 单例模式的定义:确保一个类只有一个实例,并提供一个访问他的全局访问点。单例模式是几个设计模式中...
    Geeks_Liu阅读 6,673评论 0 10
  • 1 场景问题# 1.1 读取配置文件的内容## 考虑这样一个应用,读取配置文件的内容。 很多应用项目,都有与应用相...
    七寸知架构阅读 11,789评论 12 68
  • 单例模式 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属...
    Graddy阅读 3,101评论 0 0
  • 早上和女儿一起赖床快到中午,然后一起去移动停一张不用的卡,女儿陪我去买包~修包,中午回家吃妈妈做的饭,女儿没吃,感...
    徐菲儿阅读 1,508评论 1 3

友情链接更多精彩内容