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;
}}package charactor;
public class testgiantdragon
}
步驟 4 : 什麼時候使用餓漢式,什麼時候使用懶漢式
餓漢式是立即載入的方式,無論是否會用到這個物件,都會載入。
如果在構造方法裡寫了效能消耗較大,佔時較久的**,比如建立與資料庫的連線,那麼就會在啟動的時候感覺稍微有些卡頓。
懶漢式,是延遲載入的方式,只有使用的時候才會載入。 並且有執行緒安全的考量。
使用懶漢式,在啟動的時候,會感覺到比餓漢式略快,因為並沒有做物件的例項化。 但是在第一次呼叫的時候,會進行例項化操作,感覺上就略慢。
看業務需求,如果業務上允許有比較充分的啟動和初始化時間,就使用餓漢式,否則就使用懶漢式
步驟 5 : 單例模式三元素
這個是面試的時候經常會考的點,面試題通常的問法是:
什麼是單例模式?
回答的時候,要答到三元素:
1. 構造方法私有化
2. 靜態屬性指向例項
3. public static的 getinstance方法,返回第二步的靜態屬性
Java自學 類和物件 引用
引用的概念,如果乙個變數的型別是 類型別,而非基本型別,那麼該變數又叫做引用。步驟 1 引用和指向 new hero 代表建立了乙個hero物件 但是也僅僅是建立了乙個物件,沒有辦法訪問它 為了訪問這個物件,會使用引用來代表這個物件 hero h new hero h這個變數是hero型別,又叫做引...
Java物件導向 單例設計模式
需求 定義乙個陣列的工具類arrayutil,使用單例模式解決。目的 保證在整個應用中某乙個類有且只有乙個例項 乙個類在堆記憶體只存在乙個物件 即所有指向該型別的例項的引用都指向同一塊記憶體空間。寫單例模式的步驟 1 必須在該類中,自己建立乙個物件 2 私有化自身的構造器,防止外界通過構造器建立新的...
自學日記 設計模式 單例模式
單例模式是指在整個程式執行期間,保證某個類只有乙個例項化物件,因此構造方法肯定是私有的,因為外部是無法new出來物件的,所以獲取類的方法必須是靜態的。常見的引用場景包括 程式配置類,使用程式在啟動的時候只需要配置一次。也可以理解成程式在啟動的時候需要載入的一些東西,一些準備工作。連線池 執行緒池等物...