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

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

二、方式:

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;
	}
	
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章