JAVA设计模式——单例设计模式

本文介绍了单例设计模式的概念及其在Java中的实现方式。探讨了如何确保一个类仅有一个实例,并提供了全局访问点。同时对比了饿汉式和懒汉式两种实现方法的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设计模式:解决某一类问题最行之有效的解决方式

                   就像经典棋谱,不同的棋局,可以使用不同的棋谱,免得自己再去思考和摸索。

                   Java中拥有23种设计模式


单例设计模式:解决一个类在内存中只存在一个对象


保证对象唯一

1.为了避免其他程序过多建立该类的对象,先禁止其他程序建立该类对象

2.为了让其他程序可以访问到该类对象中,只好在本类中,自定义对象

3.为了方便其他程序的访问,可以对外提供访问方式


单例设计模式中,还分为饿汉式懒汉式两种

饿汉式

先初始化对象

Single类一进入内存,就已经创建好了对象

class Single{
	private Single(){}
	
	private static Single s = new Single();
	
	public static Single getInstance(){
		return s;
	}
}

懒汉式

对象在方法调用时才进行初始化,也叫做对象的延时加载

Single类进入内存中,并没有创建对象,当调用getInstance()方法时,才建立对象

class Single{
	private Single(){}
	
	private static Single s = null;
	
	public static Single getInstance(){
		if(s==null){
			s = new Single();
		}
		return s;
	}
}

在使用懒汉式的时候,由于多线程会出现同步问题,所以需要加入同步的方式,用同步函数和同步代码块都行,但低效

class Single{
	private Single(){}
	
	private static Single s = null;
	
	public static Single getInstance(){
		if(s==null){
			synchronized (Single.class) {
				if(s==null){
					s = new Single();
				}
			}
		}
		return s;
	}
}

PS:在实际开发中,饿汉式的使用频率要更多见一些


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值