顧名思義,“單例模式”就是隻有一個實例(同一時間)。單例模式確保某一個類只有一個實例,這個類就叫單例類。單例模式有3個要點:
1.某個類只能有一個實例;
2.它必須自行創建這個實例;
3.它必須自行向整個系統提供這個實例。
爲了避免其他類自由創建該類的實例,我們把該類的構造器使用private修飾,從而把該類的構造器隱藏起來。根據良好封裝的原則,一旦把該類的構造器封裝起來,就要提供一個public方法作爲該類的訪問點,用於創建該類的對象,且該方法必須使用static修飾,因爲在調用該方法之前還存在對象,因此調用該方法的不可能是對象,只能是類。
除此之外,該類還必須緩存已經創建的類,否則該類無法知道是否已經創建過對象,也就無法保證只能創建一個對象。爲此,該類需要使用一個屬性來保存已經創建的對象,因爲該屬性需要被上面的靜態方法訪問,所以該屬性必須使用static修飾。
另外,單例的實現方式主要有餓漢式和懶漢式兩種。所謂餓漢式,就是一上來就new一個實例賦給instance實例,例如: