標籤:main 設計模式 man this nbsp void 單例設計模式 div 構造方法
單例設計模式:構造方法私人化,在類的內部定義static屬性和方法,利用static方法來取得本類的執行個體化對象;無論外部產生多少個執行個體化對象,本質上只有一個執行個體化對象
餓漢式單例設計
class Singleton{ private static final Singleton INSTANCE = new Singleton();//產生一個執行個體化對象 private Singleton(){}//封裝構造方法 public static Singleton getInstance(){ return INSTANCE;//取得執行個體化對象 } public void print(){ System.out.print("hello word"); }}public class Test{ public static void main(String args[]){ Singleton s = Singleton.getInstance();//無論調用多少次getInstance()方法,產生的執行個體化對象都是相同的 s.print(); }}
懶漢式設計模式
class Singleton{ private static final Singleton INSTANCE;//定義一個未執行個體化的本類對象 private Singleton(){}//封裝構造方法 public static Singleton getInstance(){ if(INSTANCE == null){ INSTANCE = new Singleton(); } return INSTANCE;//取得執行個體化對象 } public void print(){ System.out.print("hello word"); }}public class Test{ public static void main(String args[]){ Singleton s = Singleton.getInstance();//無論調用多少次getInstance()方法,產生的執行個體化對象都是相同的 s.print(); }}
多例設計模式:構造方法私人化,產生特定個數對象
class Sex{ private String sex; private static final Sex MAN = new Sex("男"); private static final Sex WOMAN = new Sex("女"); private Sex(String sex){ this.sex = sex; } public static Sex getInstance(int ch){ switch(ch){ case 1: return MAN; case 2: return WOMAN; default: return null; } } public String toString(){ return sex; }}public class Test{ public static void main(String args[]){ Sex s = Sex.getInstance(1); System.out.println(s); }}
java設計模式之單例設計模式和多例設計模式