Java學習筆記 21 單例項設計模式

2021-08-04 17:01:57 字數 1284 閱讀 6508

單例項(單例):即乙個類只能產生乙個例項,在有些時候這樣設計是必要的。

如果構造方法是public型別,那麼使用者可以任意地用它來構造例項,顯然不能保證單例的要求。

package t1;

public

class test

}class notsingleton

}

所以首先要保證構造方法是私有的。

因此考慮用自己例項化自己的方式,因為還沒有建立物件,所以要提供乙個暴露給外部的靜態方法,通過外部呼叫這個靜態方法來建立例項。

package t1;

public

class test

}class notsingleton

//用於自己例項化自己的靜態方法

public

static notsingleton getinstance()

}

執行的結果是false,說明這兩個物件還是不同。這是因為每次呼叫時都new了乙個新的notsingleton物件,因此不妨在類體內置立好這個物件,每次呼叫靜態方法時都判斷一下物件是否已經存在。

因為靜態的方法不能訪問非靜態的物件,所以這個物件也要做成靜態的。

package t1;

public

class test

}class notsingleton

private

static notsingleton instance;

//用於自己例項化自己的靜態方法

public

static notsingleton getinstance()

return instance;

}}

執行的結果為true。上面的方式被稱為懶漢模式,即先建立instance但不例項化它,等到呼叫靜態方法getinstance()時再判斷要不要做例項化。

與之相對的還有餓漢模式,即先做例項化,在靜態方法中只要直接返回例項即可。

package t1;

public

class test

}class notsingleton

private

static notsingleton instance=new notsingleton();

//用於自己例項化自己的靜態方法

public

static notsingleton getinstance()

}

執行的結果為true。

大話設計模式學習筆記(21) 單例模式

原始碼git位址 確保乙個實體類在整個程式執行中只能被例項化一次。即只能有乙個該類的物件。看到這個問題,有一定程式設計基礎的同學肯定能夠想到用單例模式。本篇部落格我就來寫一下單例模式的5種不同的實現方法。package singleton public class singleton 懶漢式 所謂懶...

java設計模式 單例模式 學習筆記

1 為什麼使用單例設計模式?為了避免多個例項造成資源浪費,與避免多例項多次呼叫出現的錯誤 2 什麼是單例設計模式?單例模式能夠保證整個應用中有且只有乙個例項 3 怎麼使用單例模式?1 私有化該類的建構函式 2 在 本類中new乙個物件 3 定義乙個公有的方法,返回由該類建立的物件 4 單例模式的寫法...

Java學習筆記 單例設計模式 (一)

1 什麼是單例模式 單例模式解決乙個類在記憶體中只存在乙個物件的問題。2 單例模式適合場景 單例模式適合於乙個類只有乙個例項的情況,比如視窗管理器,列印緩衝池和檔案系統,它們都是原型的例子。典型的情況是,那些物件的型別被遍及乙個軟體系統 的不同物件訪問,因此需要乙個全域性的訪問指標,這便是眾所周知的...