單例模式的問題

2021-10-07 23:31:44 字數 1414 閱讀 9777

單例模式三要素

構造方法私有化

靜態屬性指向例項

public static的 getinstance方法,返回第二步的靜態屬性

餓漢式單例模式

giantdragon 應該只有乙隻,通過私有化其構造方法,使得外部無法通過new 得到新的例項。

giantdragon 提供了乙個public static的getinstance方法,外部呼叫者通過該方法獲取12行定義的物件,而且每一次都是獲取同乙個物件。 從而達到單例的目的。

這種單例模式又叫做餓漢式單例模式,無論如何都會建立乙個例項

package charactor;

public class giantdragon

//準備乙個類屬性,指向乙個例項化物件。 因為是類屬性,所以只有乙個

private static giantdragon instance = new giantdragon();

//public static 方法,提供給呼叫者獲取12行定義的物件

public static giantdragon getinstance()}

懶漢式單例模式

懶漢式單例模式與餓漢式單例模式不同,只有在呼叫getinstance的時候,才會建立例項

package charactor;

public class giantdragon

//準備乙個類屬性,用於指向乙個例項化物件,但是暫時指向null

private static giantdragon instance;

//public static 方法,返回例項物件

public static giantdragon getinstance()

//返回 instance指向的物件

return instance;

}然後我遇到了乙個問題

public class hero

private hero(string name,float hp,float armor,int movespeed)

private static hero instance=new hero( 「虞姬」, 50);

private static hero instance1=new hero(「墨子」,45,48,98);

public static hero getinstance1()

public static hero getinstance()

}public class testhero

}為什麼在testhero()呼叫第二個建構函式時第乙個建構函式也會執行?

執行第二個instance1()時

虞姬 50

墨子 45 48 98

單例模式的問題

單例模式會產生執行緒不安全嗎?哪種模式會?如何解決?效率會受到影響嗎?如何提公升效率?答 會 懶漢式加同步 效率會受到影響 在同步 塊外賣你加上if判斷 public static singledemo getinstance return sd 假設多執行緒時,有t1和t2兩個執行緒。因為剛開始的...

單例模式 單例模式

餓漢式 急切例項化 public class eagersingleton 2.宣告靜態成員變數並賦初始值 類初始化的時候靜態變數就被載入,因此叫做餓漢式 public static eagersingleton eagersingleton new eagersingleton 3.對外暴露公共的...

Python單例模式的問題

python利用新式類可以使用單例模式,重複生成物件,雖然只會返回同乙個物件,但是其初始化函式 init 會反覆被呼叫,對於效能會產生不利的影響,如果在 init 函式中放置執行初始化的 那麼這些 也會被反覆執行,如果這些 還涉及到對外部介面的訪問,那麼會拖慢系統的執行時間。正確的做法 1.將資料 ...