Java单例模式

单例模式:java中单例模式是一种常见的设计模式。

          单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

 

Java 单例模式有五种实现方式:

饿汉式、懒汉式、Double CheckLock实现单例、静态内部类模式、枚举类。

 

单例模式的特点:
  1、单例类只能有一个实例。
  2、单例类必须自己自己创建自己的唯一实例。
  3、单例类必须给所有其他对象提供这一实例

 

单例模式适用场景:

  1. 需要生成唯一序列的环境
  2. 需要频繁实例化然后销毁的对象。
  3. 创建对象时耗时过多或者耗资源过多,但又经常用到的对象。
  4. 方便资源相互通信的环境。

 

单例模式实现方式:

  • 饿汉式:

主要特点:线程安全,调用效率高,但是不能延时加载。

 

  • 懒汉式:

主要特点:线程安全,调用效率不高,但是能延时加载

 

  • Double CheckLock实现单例:

主要特点:Double CheckLock也就是双重锁判断机制,是在懒汉式单例上发展而来。

         (由于JVM底层模型原因,偶尔会出问题,不建议使用)。

 

  • 静态内部类模式:

主要特点:线程安全,调用效率高,可以延时加载。

  • 枚举类:

主要特点:线程安全,调用效率高,不能延时加载,可以天然的防止反射和反序列化调用。

 

单例模式如何选择:

单例对象占用资源少,不需要延时加载时:选择枚举好于饿汉 。

单例对象占用资源多,需要延时加载时:选择静态内部类好于懒汉式。

Double CheckLock实现单例:由于JVM底层模型原因,偶尔会出问题,不建议使用。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值