单例设计模式

什么是单例设计模式?

保证一个类在内存中只有一个对象

两种方式:

饿汉单例设计模式:

1.私有化构造函数

2.声明本类的引用类型变量,并创建本类的对象

3.提供一个公共静态的方法获取本类的对象

具体实现:

饿汉单例设计模式:

class Demo{	
	//创建本类的对象。
	private static Demo s  = new Demo();
	//私有化构造函数
	private Demo(){}
	//提供一个公共的方法获取本类的对象。
	public static  Demo getInstance(){
		return s;
	}
}

public class Test{

public static void main(String[] args) {

Demo o1 = Demo.getInstance();

        Demo o2 = Demo.getInstance();

System.out.println("o1和o2是同一个对象吗?"+(o1==o2)); }

}

输出:

o1和o2是同一个对象吗?true


懒汉单例设计模式:

1.私有化构造函数

2.声明本类的引用类型变量,但不创建本类的对象

3.提供一个公共静态的方法获取本类对象,获取之前先判断是否已经创建了本类的对象,如果没有创建,那么先创建后再返回,如果已经创建了直接返回即可

具体实现:

懒汉单例设计模式:


测试:

class Demo{
	//声明变量的引用类型变量,但是先不要创建 本类的对象。
	private  static Demo s;
	//私有化构造函数
	private Demo(){}
	//提供一个公共静态的方法获取本类的对象,获取之前先判断是否已经创建了本类的对象,
	//如果没有创建,那么先创建本类的对象,然后再返回。否则直接返回即可。
	public static Demo getInstance(){
		if(s==null){
			s =new  Demo();
		}
		return s;
	}
}
public class Test {

public static void main(String[] args) {
Object o1 = Demo.getInstance();
System.out.println(o1);
Object o2 = Demo.getInstance();
System.out.println(o1);
System.out.println(o2);
}
 

输出:

对象o1的地址:Demo@123a439b对象o1的地址:Demo@123a439b

对象o2的地址:Demo@123a439b

结论:根据我指定的规则,调用者只能调用我给出的getInstance()方法创建Demo对象,一旦创建了一个对象,内存中只存在唯一一个对象,无论再怎么创建,引用类型变量都会指向第一次创建的那个对象,保证了单例设计模式的初衷——保证内存中只存在一个对象(推荐使用饿汉单例设计模式,因为懒汉单例设计模式存在线程安全问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值