设计模式-单例设计模式

本文深入探讨了单例设计模式的原理与应用,通过饿汉式与懒汉式的对比,阐述了其在内存管理和线程安全上的优势与权衡。

单例设计模式是指,单例对象的类,只允许实例一个对象,这样,在jvm堆内存中,就只开辟了一块空间来存储这个对象,这种设计的优点是避免了内存中空间的浪费,避免频繁的创建销毁对象,为整个系统提供一个全局的访问的。打比方,windows桌面,我们已经点开了一个回收站,当我们再点击一次回收站的时候,不会再弹出一个回收站的弹窗。

饿汉式

class Singleton{
	//私有化构造函数,让外部不能创建这个类的对象
	private Singleton (){}

	//实例化这个类,并且使用static关键字,是在类加载到内存的
    //时候就初始化,实例化这个类,使用final关键字,是代表这个变量的值
    //是不能变的了。
	private static final Singleton singleton= new Singleton();

	//对外暴露一个接口,使用static关键字修饰这个方法,代表是
    //类名直接调用这个方法。
	public static Singleton getInstance(){
		return singleton;
	}
}

懒汉式

class Singleton{
	private Singleton(){}
        
	private static final Singleton singleton=null;

	public static Singleton getInstance(){
	if(singleton==null){
		syschronized(Singleton.class){
	        if(singleton==null){
			singleton=new Singleton();
		 }
		}
	}
	return singleton;	
}

饿汉式 ,线程不是安全的,当有多个线程运行的时候,可能会出现线程安全问题,导致数据不正确,但是正因为如此,他的效率是更高的。懒汉式,是线程安全的,因为加了syschronized锁,所以每次实例化对象要判断锁,所以他的效率低。开发中一般用饿汉式。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NeilNiu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值