需求:一方面要求某類(lèi)只能存在單一的對(duì)象實(shí)例(從概念上來(lái)說(shuō),就是一組靜態(tài)方法和字段),另一方面又要求該實(shí)例的使用與普通對(duì)象一樣,單例模式就是這兩個(gè)要求之間的平衡。
單例模式通過(guò)使用私有構(gòu)造函數(shù)保證了一個(gè)類(lèi)只能存在一個(gè)實(shí)例,類(lèi)中的某個(gè)靜態(tài)方法用于返回類(lèi)的唯一實(shí)例。以下的Widget類(lèi)就是一個(gè)單例:
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對(duì)象。由于instance字段是靜態(tài)的,所以它被定義為唯一的實(shí)例。第一次調(diào)用getInstance()方法創(chuàng)建一個(gè)新的Widget對(duì)象實(shí)例,而后續(xù)所有的調(diào)用都將會(huì)返回這唯一的對(duì)象實(shí)例。
單例模式可以去掉不必要的對(duì)象創(chuàng)建過(guò)程。
單例模式通過(guò)使用私有構(gòu)造函數(shù)保證了一個(gè)類(lèi)只能存在一個(gè)實(shí)例,類(lèi)中的某個(gè)靜態(tài)方法用于返回類(lèi)的唯一實(shí)例。以下的Widget類(lèi)就是一個(gè)單例:












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