單例模式:確保乙個類最多只有乙個例項,並提供乙個全域性訪問點
普通單例模式示例(有問題)
public示例singletonclass
singleton
public
static
singleton getinstance()
return
uniqueinstance;}}
publicchocolatefactory 單利模式示例class
chocolatefactory
public
static
chocolatefactory getinstance()
return
uniqueinstance;
}public
void
fill()
}public
void
drain()
}public
void
boil() }}
單例模式優化多執行緒問題
使用synchronized同步鎖(懶漢式),如果呼叫同步鎖方法次數比較少,還可行,如果呼叫次數比較多,同步鎖是比較耗效能的
public使用synchronized 同步鎖class
singleton
public
static
synchronized
singleton getinstance()
return
uniqueinstance;}}
類載入時初始化(餓漢式),初始化後,如果不用就浪費了
public類載入就初始化class
singleton
public
static
singleton getinstance()
}
雙重檢查,加鎖法
public在加鎖前後判斷例項是否為空,注意使用了volatile 關鍵字class
singleton
public
static
singleton getinstance() }}
return
uniqueinstance;}}
還有兩種是類靜態塊和列舉,靜態塊跟餓漢式差不多,就是在類的靜態塊例項化物件;列舉用的不多
23種設計模式之單例模式
我們也經常遇到類似的情況,為了節約系統資源,有時需要確保系統中某個類只有唯一乙個例項,當這個唯一例項建立成功之後,我們無法再建立乙個同型別的其他物件,所有的操作都只能基於這個唯一例項。為了確保物件的唯一性,我們可以通過單例模式來實現,這就是單例模式的動機所在。定義 單例模式 singleton pa...
23種設計模式之 單例模式
保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。讓類自身負責儲存它的唯一例項,這個類可以保證沒有其他例項可以被建立,並且它可以提供乙個訪問 獲取 該例項的方法。單例類應滿足以下特點 單例類 singleton 自己例項化自己的唯一例項,並提供訪問該唯一例項的方法。public class s...
23種設計模式之單例模式
單例模式,屬於建立型別的一種常用的軟體設計模式。通過單例模式的方法建立的類在當前程序中只有乙個例項。單例模式是23種設計模式中比較簡單,也是比較重要的一種設計模式。在現在流行的框架中十分常見,比如 mybatis框架。新學期的第一天,小洪早早地來到教室上課,班主任是個美女呢!但是這個班主任很懶,每次...