单例模式

1.如何理解单例模式

  • 保证一个类的实例在"“特定范围”"只有一份(例如一个JVM内部,一个线程内部),并且提供一个全局访问点可以访问到这份实例

2.单例模式应用场景

  • Spring(Singleton作用域的Bean对象) BeanFactory.getBean访问点
  • Mybatis(ErrorContext对象是每个线程一份此类实例)
  • 常量池,连接池,线程池等

3.单例模式对象角色构成

  • 具体产品对象(例如;Singleton)

4.单例模式应用分析

  • 优势:科学使用资源,避免频繁创建,销毁对象时造成对资源的浪费
  • 劣势:设计不够严谨会存在线程安全问题,可扩展性相对较差

5.如何设计

  • 构造方法私有化,自关联
  • 在这里插入图片描述
    方法添加synchronized
    在这里插入图片描述
    添加同步代码块(以前效率比同步方法高,目前JVM已作出调整,没有区别)
    在这里插入图片描述
    双重验证(大对象,稀少用,适当减少阻塞)
    在这里插入图片描述
    利用静态属性,实时创建(类加载就会创建,适合小对象频繁访问)
    在这里插入图片描述
    利用静态内部类特点(延迟加载,适合大对象,频繁访问)
    在这里插入图片描述
    基于枚举类型创建单例对象
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值