单实例设计模式

今天讲一下单实例模式

A:

public class T1 {

	
	private T1(){}
	
	private static T1 t2 = null;
	
	public static T1 getInstance(){
		
		if(null == t2){
			t2 = new T1();
		}
		
		return t2;
	}
	
}

有人说A在多线程的时候会产生多个实例。于是再写一个:

B:

public class T2 {

	
	private T2(){}
	
	private static T2 t2 = null;
	
	public synchronized static T2 getInstance(){
		
		if(null == t2){
			t2 = new T2();
		}
		
		return t2;
	}
	
}
 

有人说B效率低。于是再写一个:

C:

public class T3 {

	
	private T3(){}
	
	private static T3 t2 = new T3();
	
	public static T3 getInstance(){
		
		return t2;
	}
	
}

性能问题没有了,不过这和A不是有同样的问题吗?好吧,再写一个

D:

public class T4 {
	
	private T4(){}
	
	static  class T2{
		
		static{
			System.out.println("initial inner T2");
		}
		
		private static T4 t = new T4();
	}
	
	public static T4 getInstance(){
		return T2.t ;
	}
	
}

好像还不错哦。

猜你喜欢

转载自wolfdream.iteye.com/blog/1125319
今日推荐