單例項(單例):即乙個類只能產生乙個例項,在有些時候這樣設計是必要的。
如果構造方法是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 單例模式適合場景 單例模式適合於乙個類只有乙個例項的情況,比如視窗管理器,列印緩衝池和檔案系統,它們都是原型的例子。典型的情況是,那些物件的型別被遍及乙個軟體系統 的不同物件訪問,因此需要乙個全域性的訪問指標,這便是眾所周知的...