单例模式

阅读《研磨设计模式》笔记。之后若有所感,再补充。
单例模式的目的:就是保证一个类只有一个实例
示例:
/**
 * @description 懒汉式单例
 * @author liuwei
 * @date 2014-4-16
 * @version 1.0
 */
public class Singleton1 {
	private static Singleton1 uniqueSingleton1 = null;
	private Singleton1(){};
	public static synchronized Singleton1 getInstance(){
		if(uniqueSingleton1 == null){
			uniqueSingleton1 = new Singleton1();
		}
		return uniqueSingleton1;
	}
	//method......
}

/**
 * @description 饿汉式
 * @author liuwei
 * @date 2014-4-16
 * @version 1.0
 */
public class Singleton2 {
	private static Singleton2 uniqueSingleton2 = new Singleton2();
	private Singleton2(){}
	
	public static Singleton2 getInstance(){
		return uniqueSingleton2;
	}
}

/**
 * @description
 * @author liuwei
 * @date 2014-4-16
 * @version 1.0
 */
public class Singleton3 {
	private Singleton3(){}
	/**
	 * @description类级的内部类,也就是静态的成员式内部类,
	 * 该内部类的实例与外部类的实例没有绑定关系,而且只有被调用到时才会加载,从而实现了延迟加载
	 * @author liuwei
	 * @date 2014-4-16
	 * @version 1.0
	 */
	private static class Singleton3Holder{
		/**
		 * 静态初始化,由jvm保证线程安全
		 */
		public static Singleton3 uniqueSingleton3 = new Singleton3();
	}
	public static Singleton3 getInstance(){
		return Singleton3Holder.uniqueSingleton3;
	}
}

你可能感兴趣的:(单例模式)