JAVA单例设计模式

作为一名JAVA小白,最近了解到了一下JAVA设计模式之单例设计模式,分享一下。。

首先我们要知道什么是单例设计模式和单例模式能解决的问题。。。

单例设计模式
解决的问题:保证一个类在内存中对象的唯一性。

单例设计模式
解决的问题:保证一个类在内存中对象的唯一性。

例如:多个程序读取一个配置文件时,建议将配置文件封装成对象,这样会方便操作其中数据。但是,又要保证多个程序读到的是同一个配置文件对象,这就需要该配置文件对象在内存中是唯一的了。

如何保证对象的唯一性呢?
1.首先我们想保证对象的唯一性 ,可以先私有构造函数,不允许其他人创建新对象。
2.然后可以在本类中自己创建一个对象,然后提供一个方法用来传输这个对象,给予需要用到的地方使用。(这个方法必须用static修饰,因为本类已经私有了构造函数,想要调用此类的对象,只能用类名 . 来调用)。

单例模式之懒汉式:

public class Single {

    private Single() {  }
private static Single single;
public static Single getSingle(){
	if(single==null) {
		single=new Single();
	}
	
	return single;

}

}

单例模式之饿汉式
public class Single {

 private Single() {
 }
private static Single single =new Single();

public static Single getSingle(){
	
	return single;

}

}

懒汉式:特点:Single类一进入内存,就已经创建好了对象,空间换时间

好处:线程安全.

缺点:效率比较低,因为一开始就要加载类new一个对象。

饿汉式:特点:对象是方法被调用时才初始化,也称对象的延迟加载模式,空间换时间。
优点:资源利用率高,不执行方法就不会被实例,可以执行该类的其他静态方法
缺点:有多个线程访问时会不安全,返回的会是不同对象。

总结
实际开发中因为多线程的问题,懒汉式会有问题,所以用的最多的会是饿汉式,
饿汉式能够节省时间,所以使用单例时,最好使用饿汉式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值