Java 單例模式

2021-09-03 03:13:09 字數 1662 閱讀 7663

lol裡有乙個怪叫大龍giantdragon,只有乙隻,所以該類,只能被例項化一次

步驟 1 : 單例模式

單例模式又叫做 singleton模式,指的是乙個類,在乙個jvm裡,只有乙個例項存在。

步驟 2 : 餓漢式單例模式

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()

}

package charactor;

public class testgiantdragon

}

步驟 3 : 懶漢式單例模式

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

package charactor;

public class giantdragon

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

private static giantdragon instance;

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

public static giantdragon getinstance()

//返回 instance指向的物件

return instance;

}}

步驟 4 : 什麼時候使用餓漢式,什麼時候使用懶漢式

餓漢式是立即載入的方式,無論是否會用到這個物件,都會載入。

如果在構造方法裡寫了效能消耗較大,佔時較久的**,比如建立與資料庫的連線,那麼就會在啟動的時候感覺稍微有些卡頓。

懶漢式,是延遲載入的方式,只有使用的時候才會載入。 並且有執行緒安全的考量。

使用懶漢式,在啟動的時候,會感覺到比餓漢式略快,因為並沒有做物件的例項化。 但是在第一次呼叫的時候,會進行例項化操作,感覺上就略慢。

看業務需求,如果業務上允許有比較充分的啟動和初始化時間,就使用餓漢式,否則就使用懶漢式

步驟 5 : 單例模式三元素

這個是面試的時候經常會考的點,面試題通常的問法是:

什麼是單例模式?

回答的時候,要答到三元素

1. 構造方法私有化

2. 靜態屬性指向例項

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

步驟 6 : 練習-單例模式

使用餓漢式單例模式, 把hero類改造成為單例模式

使用懶漢式單例模式,把item類改造成為單例模式

java單例模式

第一種方法 public class singleton private static singleton singleton new singleton public static singleton getinstance 第二種方法 public class singleton private...

Java 單例模式

單例模式特點 1 單例類只能有乙個例項。2 單例類必須自己自己建立自己的唯一例項。3 單例類必須給所有其他物件提供這一例項。一 餓漢式單例 基於classloder機制避免了多執行緒的同步問題,使用較多 public class singleton 這裡提供了乙個供外部訪問本class的靜態方法,可...

Java單例模式

單例模式的意圖是為了確保乙個類有且僅有乙個例項,並為它提供乙個全域性訪問點。單例模式通過隱藏建構函式,提供物件建立的唯一入口點,從而將類的職責集中在類的單個例項中。design patterns一書中把單例模式歸類為 建立型 模式,意圖是在表明單例物件承擔了其他物件所要依賴的職責。單例模式的優點 在...