单例模式(逐步递进的三种)

package 单例模式A;

public class SingletonPatternA {
	
	@SuppressWarnings({ "static-access", "unused" })
	public static void main(String args[]){
		
		 Emperor emperor1 = Emperor.getInstance();
		 emperor1.emperorInfo();
		 
		 Emperor emperor2 = Emperor.getInstance();
		 emperor1.emperorInfo();
		
		 if(emperor1 == emperor2){    //判断emperor1 和emperor2 是否是同一个人
			 System.out.println(emperor1+"=="+emperor2+" true.");
		 }
	}
}

class Emperor {
	
	private static Emperor emperor = null;
	
	public Emperor(){}
	
	public static Emperor getInstance(){
		if(emperor ==null){
			emperor = new Emperor();
		}
		return emperor;
	}
	
	public static void emperorInfo(){
		System.out.println("我是皇帝某某···");
	}
	
}

//**************************************************************************

package 单例模式A;

public class SingletonPatternB {
	
     @SuppressWarnings("static-access")
	public static void main(String args[]){
    	 
    	 new  Emperor2().getInstance().emperorInfo();
		 
     }
}

class Emperor2 {
	
	private static Emperor2  emperor2=null; 
	
	Emperor2(){}
	
	@SuppressWarnings("static-access")
	public  Emperor2 getInstance(){
		if(this.emperor2 == null)                    //只有这儿和第一种不同
			this.emperor2 = new Emperor2();
		return this.emperor2;
	}
	
	public static void emperorInfo(){
		System.out.println("我是皇帝某某···");
	}
}


//***********************************************************************
package 单例模式A;

public class SingletonPatternC {
	
	@SuppressWarnings("static-access")
	public static void main(String args[]){
		Emperor3 emperor3 = Emperor3.getInstance();
		emperor3.emperorInfo();
		
		Emperor3 emperor33 = Emperor3.getInstance();
		emperor33.emperorInfo();
		
		if(emperor3 == emperor33){
			System.out.print("他们是同一个对象!");
		}
	}
}

class Emperor3 {
	
	private static final Emperor3 emperor3 = new Emperor3();   //变化
	
	private Emperor3(){}
	
	public synchronized static Emperor3 getInstance(){  //防止并发 多线程问题
		return emperor3;
	}
	
	public static void emperorInfo(){
		System.out.println("我是皇帝某某···");
	}
}


//当然了,我们是推荐第三种的!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


猜你喜欢

转载自zhangit.iteye.com/blog/1852309