单例模式

单例模式的定义

定义:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

单例模式的优缺点及应用场景

优点

  1. 在内存中只有一个实例,减少内存开支,特别适用于一个对象需要频繁地创建销毁。
  2. 避免对资源的多重占用。

缺点

  1. 单例模式扩展困难。
  2. 不利于测试。

应用场景
创建一个对象需要耗费大量资源,如访问IO和数据库资源等。

示例代码

//通用代码
public class SingletonA{
	private static SingletonA instance = new SingletonA();

	private SingletonA(){
	}
	
	public static SingletonA getInstance(){
		return instance;
	}	
}

/*
 *  懒汉式单例 线程安全 但效率影响
 * */
public class Singleton
{
	private static Singleton istance = null;
    private Singleton(){}
    //给整个方法加锁
    public static synchronized Singleton getInstance()
    {
    	if(istance ==null)
    	{
    		istance = new Singleton();
    	}
    	return istance;
    }
}

/*
 *  双锁模式 保证高性能且安全
 * */
public class SingletonDCL
{
	//volatile保证可见性
   private volatile static SingletonDCL instance;
   private SingletonDCL(){}
   public static SingletonDCL getInstance()
   {
	   if(instance == null)
	   {
		   synchronized (SingletonDCL.class)
		   {
			   if(instance ==null)
			   {
				   instance = new SingletonDCL();
			   }
		   }
	   }
	   return instance;
   }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值