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

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












單例模式可以去掉不必要的對象創(chuàng)建過程。