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一書中把單例模式歸類為 建立型 模式,意圖是在表明單例物件承擔了其他物件所要依賴的職責。單例模式的優點 在...