設計模式——單例模式
單例模式的定義
Ensure a class has only one instance, and provide a global point of access to it.
確保某一個類只有一個實例,而且自行實例化并向整個系統(tǒng)提供這個實例。
public class Singleton{
private static final Singleton singeton = new Singleton();
private Singleton(){
}
public static Singleton getSingleton(){
return singleton;
}
public static void doSomething(){
// doSomething
}
}
單例模式的優(yōu)點
- 單例模式在內存中只有一個實例,減少了內存開支
- 單例模式只生成一個實例,所以減少了系統(tǒng)的性能開銷
- 單例模式可以避免對資源的多重占用
- 單例模式可以在系統(tǒng)設置全局的訪問點,優(yōu)化和共享資源訪問。
單例模式的缺點
- 單例模式一般沒有接口,擴展很困難
- 單例模式對測試是不利的
- 單例模式與單一職責原則有沖突。
單例模式的使用場景
- 要求生成唯一序列號的環(huán)境
- 在整個項目中需要一個共享訪問點或共享數(shù)據(jù)
- 創(chuàng)建一個資源需要消耗的資源過多
- 需要定義大量的靜態(tài)常量和靜態(tài)方法