Singleton pattern (three progressively progressive)

package singleton pattern 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){ //Determine whether emperor1 and emperor2 are the same person
			 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("I am the emperor XX...");
	}
	
}

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

package singleton pattern 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) //only this is different from the first one
			this.emperor2 = new Emperor2();
		return this.emperor2;
	}
	
	public static void emperorInfo(){
		System.out.println("I am the emperor XX...");
	}
}


//***********************************************************************
package singleton pattern 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("They are the same object!");
		}
	}
}

class Emperor3 {
	
	private static final Emperor3 emperor3 = new Emperor3();   //变化
	
	private Emperor3(){}
	
	public synchronized static Emperor3 getInstance(){ //Prevent concurrent multithreading problems
		return emperor3;
	}
	
	public static void emperorInfo(){
		System.out.println("I am the emperor XX...");
	}
}


//Of course, we recommend the third one! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !


Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=326986800&siteId=291194637