java的单例模式

1.什么是单例模式

    单例模式是java设计模式中的一种,是一种创建型模式,意思就是说如果某个类采用单利模式(singleton)的话,在这个类被创建之后,只会存在一个这个类的实例对象,且可以提供外部访问的全局访问点。

    那么全局的对象和singleton模式有什么本质上的区别呢,大量使用全局对象会使得程序质量降低,且有些编程语言是不支持全局变量的。最重要的也是最根本的就是全局变量可以被实例化多次。

2.单例模式的特点

   实现单例模式的类智能有一个实例

   单例类必须自己在类的内部创建自己的唯一的实例

   单例类要提供一个全局访问的访问点,供其他对象能够得到这一个实例

3.单例模式的常见应用场景

   比如说windows的任务管理器就是典型的单例模式,你无法打开多个任务管理器。

   再通俗点的就是网站的计数器,一般也是采用单例模式实现,否则难以同步。

4.单例模式的举例

   1. 饿汉方式的单例模式

class HungrySingleton{ 

    private static HungrySingleton singleton=new HungrySingleton(); 
 
    private HungrySingleton(){} 
 
    public static HungrySingleton getInstance(){ 

        return singleton;  
    } 

} 


特点:饿汉方式是线程安全的,但是效率相对来说比较低。

2.懒汉方式的单例模式

class LazySingleton{  
    private static LazySingleton singleton; 
    private LazySingleton(){ 
    } 
    public static LazySingleton getInstance(){ 
        if(singleton==null){ 
            singleton=new LazySingleton(); 
        } 
        return singleton; 
    }    
} 


特点:线程不安全

3.使用内部类

public class Singleton{
	private static class SingletonHolder{
		private static Singleton instance = new Singleton();
	}
	
	private Singleton(){
	}
	
	public static Singleton getInstance(){
		return SingletonHoder.instance;
	}
}


特点:线程安全,懒加载

本人推荐使用第三种方式,适用面最广。











      


  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值