javaの単一の例のモードの実例、および単一の例の体現する肝心な点

1641 ワード

特徴:1、単例類は一例しかないです。
2,単例類は自分で自分の唯一のインスタンスを作成しなければなりません。
3,単一の例クラスはすべての他のオブジェクトにこの例を提供しなければならない。
プリンターを例にとって、一台のコンピュータは複数のプリンタと接続できますが、プリントするたびに一つのプリンタで一つのファイルを印刷することができます。
ケース:
単例クラス:
package singleTon;


public class Singleton1 {
	private String name;
	private static Singleton1 singleton1=null;
	
	private Singleton1(){
		
	}
	public static Singleton1 newInstance(){
		if(singleton1==null){
		singleton1=new Singleton1();
		}
		return singleton1;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

}
テストクラス:
package singleTon;

public class Test {

	public static void main(String[] args) {
		Singleton1 singleton1=Singleton1.newInstance();
		singleton1.setName("name1");
		System.out.println(singleton1.getName());
		Singleton1 singleton12=Singleton1.newInstance();System.out.println(singleton12.getName());
		singleton12.setName("name2"); 
		System.out.println(singleton1.getName());
		System.out.println(singleton12.getName());
		System.out.println(singleton1==singleton12);
	}

}
説明:直接テストクラスを見て、第一歩はnewInstance()メソッドを呼び出して、Singleton 1クラスに入り、静的変数singleton 1がnullであるかどうかを判断し、nullであればnewオブジェクトを呼び出して、テストクラスに戻って、nameに値を割り当てて、「name 1」と印刷します。
第二のステップは、次に、newInstance()方法を再度実行し、Singleton 1クラスに入り、静的変数singleton 1がnullであるかどうかを判断する。第一歩はもうnewになりました。静的変数singleton 1はすでにnullではないので、newオブジェクトに行くのではなく、直接テストクラスに戻ります。対象singleton 1をsingleton 12に割り当てます。だから、後に何回newInstanceを実行しても、すべての象に対しては初めてのsingleton 1です。
第3歩、プリントの結果を見て、それぞれ「name 1」「name 2」「name 2」「true」です。
まだ疑問を持っている友達は大丈夫です。debug運行は説明によって詳しく体得します。