單例模式是設計模式中使用最爲廣泛的模式之一。它是一種對象建立模式,用於產生一個對象的具體事例,它能夠確保系統中一個類只產生一個實例。在Java語言中,這樣的行爲帶來兩大好處:設計模式
所以對於系統的關鍵組件和被頻繁使用的對象,使用單例模式即可以有效地改善系統的性能。緩存
單例模式的核心在於經過一個接口返回惟一的對象實例。一個簡單的單例實現以下:安全
public class Singleton { private Singleton(){ System.out.println("Singleton is create");//建立單例的過程可能會比較慢 } private static Singleton singleton = new Singleton(); public static Singleton getInstance(){ return singleton; } }
首先單例必需要有一個private訪問級別的構造函數,只有這樣,才能確保單例不會在系統中的其餘代碼內被實例化,其次singleton成員變量和getInstance()方法必須是static的。負載均衡
它惟一不足僅是沒法對singleton實例作延遲加載。假如單例的建立過程很慢,而因爲singleton成員變量是static定義的,所以在JVM加載單例類時,單例對象就會被創建,若是此時,這個單例類在系統中還扮演其餘角色,那麼任何使用這個單例類的地方都會初始化這個單例變量,而無論是否會被用到。至於單例模式的懶加載和其餘更有寫法有興趣的朋友能夠自行查閱其餘資料。函數
代理模式也是一種常見的設計模式。它使用代理對象完成用戶請求,屏蔽用戶對真實對象的訪問。就如同現實中的代理同樣。在軟件設計中,使用代理模式的意圖也不少,好比由於安全緣由,須要屏蔽客戶端直接訪問真實對象;或者在遠程調用中,須要使用代理類處理遠程方法調用的技術細節(如RMI);也多是爲了提高系統性能,對真實對象進行封裝,從而達到延遲加載的目的。性能