单例模式---(1)

     先来介绍一下设计模式:它是一套被反复使用,多数人知晓的,经过分类编目的,代码设计经验的总结。设计模式更多的是停留在思想层面,指导我们提高编码的效率和质量。

   使用设计是为了可重用代码,让代码更容易被他人理解,保证代码的可靠性。


单例模式:

     在我们的开发过程中,有些对象我们只需要一个,例如:配置文件,工具类,线程池,缓存,日志对象等。

  如果创建多个实例,就会导致很多问题,比如占用过多资源,获取内容不一致的问题,为了保证整个应用中的实例有且只有一个,便要用到单例模式。


单例模式有两种实现方式,懒汉模式和饿汉模式


饿汉模式

<span style="font-size:18px;">public class Singleton
{
	//1.将构造器私有化,不允许外部直接创建对象
	private Singleton(){}
	//2.创建类的唯一实例,为保证类的封装特性,要将其私有化
	private static Singleton instance = new Singleton();
	//3.给外部提供一个静态方法,可以获取该唯一实例
	public static Singleton getInstance()
	{
		return instance;
	}
}</span>
 

通过这种方式,可以保证外部获得的实例对象为同一个。

之所以称其为饿汉模式,是因为这个唯一的实例对象实在类加载的时候就被创建了,也就是着急吃饭,即为饿汉模式


懒汉模式

<strong><span style="font-size:18px;">public class Singleton2
{
	//1.将构造器私有化,不允许外部直接创建对象
	private Singleton2(){}
	//2.声明类的唯一实例,为保证类的封装特性,要将其私有化,与饿汉模式不同的是,
	//  此处只是声明对象,并未将其实例化
	private static Singleton2 instance;
	//3.给外部提供一个静态方法,可以获取该唯一实例
	public static Singleton2 getInstance()
	{
		if(instance==null)
		{
			instance = new Singleton2();
		}
		return instance;
	}
}</span></strong>

  这种方式通过判断实例是否为空来决定是否需要创建实例,当第一次调用该方法时会创建实例,之后便只需直接应用第一次创建的实例即可。

 

饿汉模式和懒汉模式的区别

  饿汉模式中实在类加载时就创建实例对象,所以加载阶段比较慢,运行阶段之间使用已经创建好的实例,所以会比较快。与之相反

懒汉模式是在运行阶段才创建类的唯一实例,所以运行阶段比较慢,而类加载阶段比较快

    另一个重要的区别是,饿汉模式是线程安全的,而懒汉模式是线程不安全的。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值