C語言-輸出水仙花數
阿新 • • 發佈:2020-12-07
對單例模式學習之後的理解
單例模式
從單例模式的概念可以得知要先建立一個物件,那就必須要有構造方法,然後因為在其他類中我們可以建立無數個物件,所以要把構造方法私有化。
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);
}
}
測試結果