Java自學 類和物件 單例模式

2021-09-14 03:17:30 字數 1783 閱讀 7873

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出來物件的,所以獲取類的方法必須是靜態的。常見的引用場景包括 程式配置類,使用程式在啟動的時候只需要配置一次。也可以理解成程式在啟動的時候需要載入的一些東西,一些準備工作。連線池 執行緒池等物...