1. 程式人生 > 其它 >C語言-輸出水仙花數

C語言-輸出水仙花數

技術標籤:Javajava設計模式單例模式

對單例模式學習之後的理解

單例模式
從單例模式的概念可以得知要先建立一個物件,那就必須要有構造方法,然後因為在其他類中我們可以建立無數個物件,所以要把構造方法私有化。

package com02;

public class SingleDemo {

	private SingleDemo() {

	}

}

那麼這時其他類就建立不了物件, 只能在本類中建立,那麼我們就定義一個SingleDemo類的屬性當做物件

package com02;

public class SingleDemo {
	
	private SingleDemo singleDemo;
private SingleDemo() { } }

然後寫一個獲取這個屬性物件的方法getSingleDemo(),在方法中判斷一下物件是否為空,如果為空,就建立一個,此時我們就有了一個物件;如果不為空,證明已經有了一個物件,那麼就直接返回這個物件。

package com02;

public class SingleDemo {
	
	private SingleDemo singleDemo;

	private SingleDemo() {

	}
	
	public SingleDemo getSingleDemo() {
		if(singleDemo==null) {
singleDemo = new SingleDemo(); } return singleDemo; } }

現在通過其他類來獲取這個物件時,發現陷入了呼叫get方法獲取物件—>沒有物件—>呼叫 get方法獲取物件的死迴圈,這時我們可以想到用類名.方法名的形式來呼叫這個方法,那麼此時方法就必須加上static,靜態方法是在類載入時就自動執行,但是方法中的single此時並不存在,所以single屬性也要加上static。

package com02;

public class SingleDemo {
	
	private static SingleDemo singleDemo;
private SingleDemo() { } public static SingleDemo getSingleDemo() { if(singleDemo==null) { singleDemo = new SingleDemo(); } return singleDemo; } }

測試

package com02;

public class Test {
	public static void main(String[] args) {
		SingleDemo demo1 = SingleDemo.getSingleDemo();
		SingleDemo demo2 = SingleDemo.getSingleDemo();

		System.out.println(demo1);
		System.out.println(demo2);
		System.out.println(demo1 == demo2);
	}
}

測試結果
測試結果