单例模式的写法总结

目录单例模式简介使用场景饿汉式markdown使用说明新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入单例模式...
摘要由CSDN通过智能技术生成

单例模式简介

使用场景

  • 单例模式算是最简单的设计模式,就像名字中的单例一样,只存在一个实例。一般适用于一下集中情况:
    1. 系统只需要一个对象存在的时候
    2. 对象比较大占用资源比较多的时候
    3. 构建比较复杂,且不需要多个对象的时候
    4. 比较紧缺的资源对象,比如只有一个打印机

饿汉式

  • 饿汉式为单例模式的一种写法,意思是在类加载的时候就初始化对象,不管对象是否有调用,该模式为线程安全的模式,但是会造成一些可能存在的资源浪费(运行过程中未使用到该实例)和启动初始化速度变慢的可能性。该模式写法也比较简单,代码如下:

/**
 * @author kiven
 * @Date 2020-03-01-4
 * 单例模式-饿汉式
 */
public class HungrySingleInstance {
   
    private static HungrySingleInstance INSTANCE = new HungrySingleInstance();

    private HungrySingleInstance() {
   
    }

    public static HungrySingleInstance getInstance() {
   
        return INSTANCE;
    }
}
  • 由于对象为静态初始化变量,在类加载时初始化,类加载过程由jvm保证线程安全,所以该模式为线程安全模式。饿汉式还有一种写法,就是使用静态代码块初始化静态变量(但是这个写法要注意顺序,如果静态初始化变量写在静态变量定义之前,则会出现静态变量为null的情况,我用java8测试过,没有该情况出现,不知道是不是java8做了优化处理),正常的代码:
/**
 * @author kiven
 * @Date 2020-03-01-14 15:23
 * 单例模式-饿汉式(静态代码块)
 */
public class HungrySingleInstance2 {
   
    private static HungrySingleInstance2 INSTANCE;
    
    //静态初始化代码在定义之后
    static {
   
        INSTANCE = new HungrySingleInstance2();
    }
    private HungrySingleInstance2() {
   
    }

    public static HungrySingleInstance2 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值