单例模式--确保一个类只有一个实例,并提供一个全局访问点。

一、定义:单件模式--确保一个类只有一个实例,并提供一个全局访问点。

二、方式:

1.懒汉式


/**
 * 
 * @author Kevintan
 * 经典的单件模式的实现,懒汉式
 * synchronized 处理多线程的同步问题。
 * 缺点:降低了性能,不利于程序频繁的调用
 * 适用场景:性能对应用程序不是很关键。
 */
public class Singleton1 {
	private static Singleton1 uniqueInstance ;
	
	private Singleton1() {}
	
	public static synchronized Singleton1 getInstance(){
		if (uniqueInstance ==  null) {
			uniqueInstance = new Singleton1();
		}
		return uniqueInstance;
	}
	
}

2.饿汉式


/**
 * 
 * @author Kevintan
 * 急切实例化,饿汉式
 * 适用于:应用程序总是创建并使用单件实例或创建和运行时的负担不太繁重。
 * 缺点:不能用于频繁创建或使用或耗费内存过大的程序中。
 */
public class Singleton2 {
	private static Singleton2 uniqueInstance = new Singleton2();
	
	private Singleton2() {}
	
	public static Singleton2 getInstance(){
		if (uniqueInstance ==  null) {
			uniqueInstance = new Singleton2();
		}
		return uniqueInstance;
	}
	
}

3.双重检索加锁


/**
 * 
 * @author Kevintan
 *双重检索加锁
 *原理:首先检查是否实例已经创建了,如果尚未创建,“才”进行同步。
 *这样一来,只有第一次创建实例时会同步。
 *优点及适用于:帮助你大大减少时间耗费,提高性能
 */
public class Singleton3 {
	private static volatile Singleton3 uniqueInstance ;
	
	private Singleton3() {}
	
	public static synchronized Singleton3 getInstance(){
		if (uniqueInstance ==  null) {
			synchronized (Singleton3.class) {
				if (uniqueInstance ==  null) {
					uniqueInstance = new Singleton3();
				}
			}
		}
		return uniqueInstance;
	}
	
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值