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

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

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

                   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:在实际开发中, 饿汉式的使用频率要更多见一些


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值