單例模式是指在整個程式執行期間,保證某個類只有乙個例項化物件,因此構造方法肯定是私有的,因為外部是無法new出來物件的,所以獲取類的方法必須是靜態的。
常見的引用場景包括:
程式配置類,使用程式在啟動的時候只需要配置一次。也可以理解成程式在啟動的時候需要載入的一些東西,一些準備工作。
連線池、執行緒池等物件。乙個應用程式應該只有乙個
這裡粗濾提乙個概念,類的執行流程:
(類載入)將類的資訊載入到記憶體中,並為每種資料型別劃分記憶體空間
➡(例項化)將記憶體中為類的屬性設定初始值,即各個資料型別的初始值(int為0,boolean 為false,string預設值為null,物件預設值為null)
➡(初始化)為類的屬性附上我們傳入的值(比如說有參構造,這裡才是真正我們給定的值),靜態**塊或者靜態變數是在初始化階段才被賦值或者執行!
static存在的意義個人理解。
如果說static是為了在初始化前進行賦值或者執行一段**邏輯,為什麼不在建構函式中直接賦值或執行邏輯呢?考慮到構造方法過載,減少**重複,這樣設計也是有必要的。歡迎大佬補充
單例模式的寫法
懶漢式
//在類初始化之後model物件為空物件,在呼叫getmodel方法的時候才進行例項化
public class singletonmodel
public static singletonmodel getmodel()
return model;
}}
餓漢式
//在初始化時就已經new了乙個物件了(餓漢,比較急),物件的獲取通過getmodel方法獲得
public class singletonmodel
public static singletonmodel getmodel()
}
雙鎖機制的單例模式
public class singletonmodel
public static singletonmodel getmodel()}}
return model;
}}
有不對的地方請各位大佬指正。 自學日記 設計模式 工廠模式
設計模式大多應用於框架級別,我們在看框架原始碼時,會看到各種設計模式,雖然我肯定是寫不出來框架的,但是還是覺得要學一下!故事開始 聯盟和部落脆弱的協議又扯淡了,戰爭一觸即發,雙方需要坦克,飛機,ak47,m4a1,東風快遞等各種重火力。烏瑞恩國王開始為戰略物資發愁,於是指示希爾瓦娜斯籌措物資。希爾瓦...
設計模式 單例模式
單例模式 singleton pattern 是乙個比較簡單的模式,其定義如下 ensure a class has only one instance,and provide a golbal point of acess to it.確保某乙個類只有乙個例項,而且自行例項化並且向整個系統提供這個...
設計模式 單例模式
class testsingleton static public function instance return self testsingleton private function clone public function setsinvar sinvar public function ...