需求:一方面要求某類只能存在單一的對象實例(從概念上來說,就是一組靜態方法和字段),另一方面又要求該實例的使用與普通對象一樣,單例模式就是這兩個要求之間的平衡。
單例模式通過使用私有構造函數保證了一個類只能存在一個實例,類中的某個靜態方法用于返回類的唯一實例。以下的Widget類就是一個單例:
public class Widget{
private static Widget instance = new Widget();
public static Widget getInstance(){
return instance;
}
private Widget(){}
public int doSomething(){
//

}
}
Widget的構造函數是私有的,這以為著只有靜態方法getInstance()能夠創建Widget對象。由于instance字段是靜態的,所以它被定義為唯一的實例。第一次調用getInstance()方法創建一個新的Widget對象實例,而后續所有的調用都將會返回這唯一的對象實例。
單例模式可以去掉不必要的對象創建過程。
單例模式通過使用私有構造函數保證了一個類只能存在一個實例,類中的某個靜態方法用于返回類的唯一實例。以下的Widget類就是一個單例:












單例模式可以去掉不必要的對象創建過程。