// 單例類publicclassA{// 2、定義一個靜態變量記住類的一個對象privatestaticA a =newA();// 1、私有構造器privateA(){}// 3、定義一個靜態方法返回對象publicstaticAgetObject(){return a;}}
單例類有很多形式
如“餓漢式單例”:拿對象時,對象早就創建好了。
publicclassA{// 2、定義一個靜態變量記住類的一個對象privatestaticA a =newA();// 1、私有構造器privateA(){}// 3、定義一個靜態方法返回對象publicstaticAgetObject(){return a;}}
如“懶漢式單例”:拿對象時,才開始創建對象。
特點:延遲加載對象
寫法:
把類的構造器私有。
定義一個靜態變量由于存儲對象。
提供一個靜態方法,保證返回的是同一個對象。
publicclassB{// 2、定義一個類變量量用于存儲對象privatestaticB b ;// null// 1、單例必須私有構造器privateB(){}// 3、提供一個類方法返回類的一個對象publicstaticBgetObject(){if(b ==null){b =newB();}return b;}}
枚舉類
枚舉類是一種特殊類。
寫法
修飾符 enum 枚舉類名{名稱1, 名稱2,...; 其他成員…
}
特點:
枚舉類中的第一行,只能寫枚舉類的對象名稱,其要用逗號隔開。
這些名稱,本質是常量,每個常量都記住了枚舉類的一個對象。
publicenumA{X,Y,Z;}Compiled from "A.java"publicfinalclassAextendsjava.lang.Enum<A>{publicstaticfinalAX=newA();publicstaticfinalAY=newA();publicstaticfinalAZ=newA();publicstaticA[]values();publicstaticAvalueOf(java.lang.String);}