單例模式的設計是為了保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。
如果想控制例項數目,節省系統資源的時候,就可以考慮單例模式。
1)懶漢式)
懶漢式是並不在instance定義處直接例項化,而是在使用時才例項化,這是考慮到資源節約,但一般來說,乙個物件的記憶體資源占用不會太大,但由於這種方式為了執行緒安全,需要加鎖,所以效率會較低。
// 懶漢式
public class singleobject
return instance;
}}
2)餓漢式
相反,餓漢式的實現方式,由於一開始就例項化了乙個物件,所以不需要加鎖,效率會較高公升。缺點是耗記憶體。
// 餓漢式
public class singleobject
}
3)內部鎖
針對懶漢式,為了提公升效率又執行緒安全,有些優化思路。比如在判斷例項是未建立的情況下,才加鎖,這樣除第一次需要加鎖以外,後面每次拿例項只需要執行乙個if語句就可以了。
// 內部鎖
public class singleobject
}} return instance;
}}
設計模式來一發(四)抽象工廠模式
抽象工廠模式為建立一組相關或相互依賴的物件提供乙個介面,而且無需指定它們的具體類。對比工廠方法模式的定義 為某個物件提供乙個介面,而且無需指定它們的具體類。可以看出抽象工廠模式相當於是對工廠方法模式 的橫向擴充套件,工廠方法只能建立一類介面,而抽象工廠模式可以建立多類介面,當然這些介面遵循一致需求。...
設計模式來一發(三)工廠方法模式
為某個物件提供乙個介面,而且無需指定它們的具體類。工廠方法模式,是簡單工廠模式的延伸 簡單工廠模式中,每出現乙個新的產品 或實現 都要修改工廠類,這違背了開閉原則。所以工廠方法通過將建立產品的實現延遲到子類,解決了這個問題。但這帶來了新的問題,就是每出現乙個新的產品,就要增加新的產品類例項,開發成本...
設計模式來一發(十一)外觀模式(也稱門面模式)
外觀模式是指外部與乙個子系統的通訊通過乙個統一的門面物件進行互動,以此來降低系統間的依賴。外觀模式通過在客戶端和複雜系統之間再加一層,將呼叫順序 依賴關係等處理好,為乙個複雜子系統提供乙個簡單介面。在層次化結構中,可以使用facade模式定義系統中每一層的入口。外觀模式通常在子系統較多且需要增添的情...