1.確保乙個類只有乙個例項,自行例項化並向系統提供這個例項
2.單例模式分類:
3.單例模式要素:
餓漢式單例:在單例類被載入時候,就例項化乙個物件交給自己的引用 ;懶漢式單例:在呼叫取得例項方法的時候才會例項化物件4.單例模式的優點
5.**例項
package singleton;
/** * 懶漢式單例類,在第一次呼叫的時候例項化自己
*@author administrator
* */
public
class
singleton
//靜態示例方法
public
static singleton getinstance()
return singleton;
}}
package singleton;
/** * 餓漢式單例,在類初始化時,已經自行例項化
*@author administrator
* */
public
class
singleton2
//靜態工廠方法
public
static singleton2 getinstance()
}
餓漢模式的優缺點:
6.關於懶漢式單例執行緒不安全解決方案
public
static
synchronized singleton getinstance()
在方法呼叫上加了同步,雖然執行緒安全了,但是每次都要同步,會影響效能,畢竟99%的情況下是不需要同步的
public
static testsingleton getinstance()}}
return instance;
}
在getinstance中做了兩次null檢查,確保了只有第一次呼叫單例的時候才會做同步,這樣也是執行緒安全的,同時避免了每次都同步的效能損耗
class test
private
static
class singletonhelp
public
static test getinstance()
}
利用了classloader的機制來保證初始化instance時只有乙個執行緒,所以也是執行緒安全的,同時沒有效能損耗,所以一般我傾向於使用這一種。
7.應用
package thread_2;
/** * 懶漢模式--靜態內部類
*@author administrator
* */
public
class
testsingleton
private
static
class
singletonhelp
public
static testsingleton getinstance()
public string getname()
public
void
setname(string name)
public
void
printinfo()
}
package thread_2;
public
class tmain else
}}
this name is tom總結:this name is tom
建立的是同乙個例項
一般採用餓漢式,若對資源十分在意可以採用靜態內部類,不建議採用懶漢式及雙重檢測
知了堂學習筆記 設計模式之單例模式
介紹 singleton是一種建立型模式,指某個類採用singleton模式,則在這個類被建立後,只可能產生乙個例項供外部訪問,並且提供乙個全域性的訪問點。全域性物件和singleton模式有本質的區別,因為大量使用全域性物件會使得程式質量降低,而且有些程式語言根本不支援全域性變數。最重要的是傳統的...
知了堂學習筆記 設計模式之工廠模式
文章 簡單工廠 靜態 特點 1.它是乙個具體的類,非介面抽象類。通過create 方法,利用if或者switch建立產品並返回。2.create 方法通常是靜態的,也成為靜態工廠。缺點 1.擴充套件性差 2.不同的產品需要不同額外引數的時候不支援。package model 簡單 靜態 工廠 pub...
繼承單例模式 php PHP設計模式之單例模式
單例模式,就是保持乙個物件只存在乙個例項。並且為該唯一例項提供乙個全域性的訪問點 一般是乙個靜態的getinstance方法 單例模式應用場景非常廣泛,例如 資料庫操作物件 日誌寫入物件 全域性配置解析物件 這些場景的共同特徵是從業務邏輯上來看執行期間改物件卻是只有乙個例項 不斷new多個例項會增加...