Javaベースの単例設計モード

13857 ワード

単一設計モード:クラスにインスタンスが1つしかないことを保証し、そのグローバルアクセスポイントにアクセスします.
1、構築方法の私有化2、本クラスのオブジェクト3を宣言し、外部に静的メソッドを提供してオブジェクトインスタンスを取得する
2つの実装方法:1、餓漢式2、怠け者式単例設計モード1、構造方法私有化2、本クラスオブジェクト3を宣言し、外部に静的方法を提供してオブジェクトインスタンスを取得する
1、   :       getInstance   ,     ,        
2、   :       ,     ,        

            ,       ?
1、           (     ,      ,    )
2、           

                     ,       

            +         ?
    API  Math                               
                             

/**
	      
	1、       
	2、        
	3、                 
	
	1、   :       getInstance   ,     ,        
	2、   :       ,     ,        
	
	            ,       ?
	1、           (     ,      ,    )
	2、           
	
	                     ,       
	
	            +         ?
	
	
*/
public class Test8{
	public static void main(String[] args){
		//Singleton1 s = new Singleton1();          new                     
		Singleton1 s = Singleton1.getInstance();
		s.print();
		Singleton2 s2 = Singleton2.getInstance();
		s2.print();
		
		System.out.println(s==s2);
		
		
	}
}

//         +            ,  Math
class Tools{
	
	private Tools(){};
	public static void print1(){
		
	}
	public static void print2(){
		
	}
}


//   :         ,    
class Singleton1{
	private Singleton1(){}
	private static Singleton1 s = new Singleton1();
	public static Singleton1 getInstance(){
		return s;
	}
	public void print(){
		
		System.out.println("    ");
	}
}

//   :         ,   (   ,    )
//             
class Singleton2{
	private Singleton2(){};
	private static Singleton2 s;
	
	public static Singleton2 getInstance(){
		if(s==null){
			s = new Singleton2();
		}
		return s;
	}
	public void print(){
		System.out.println("    2");
	}
}





自分でもう一度叩いた
package Stringlei;

/*
*@author Shishuai E-mail:[email protected]
*@version Create time : 2019 4 15   8:00:50
*   :        
*/
public class Danli {
	public static void main(String[] args) {
		Singleton1 singleton1 = Singleton1.getInstance();
		singleton1.print();
		
		Singleton2 singleton2 = Singleton2.getInstance();
		singleton2.print();
	}
}
//   
class Singleton1{
	private Singleton1() {}
	private static Singleton1 s = new Singleton1();
	public static Singleton1 getInstance() {
		return s;
	}
	public void print() {
		System.out.println("       ");
	}
	
}
//   
class Singleton2{
	private Singleton2() {}
	private static Singleton2 singleton2;
	
	public static Singleton2 getInstance() {
		if(singleton2 == null) {
			singleton2 = new Singleton2();
		}
		return singleton2;
	}
	public void print() {
		System.out.println("       ");
	}
}