設計模式之禪 單例模式

2021-08-14 12:08:00 字數 1091 閱讀 5098

想法

1. 不想要別人去建立我這個物件

建構函式private唄,別人看不到;

2. 既然別人不能建立,那我該如何獲取

靜態屬性?不,這個設計會我的「皇帝」給弄得面目全非了

class emperor

}emperor.hd=null;//破壞者一號

靜態常量?不,這個太壓抑了吧!

class emperor

}emperor.hd;//壓抑...

方法來解決:用方法來返回乙個「皇帝」;只返回乙個那用靜態方法好了!

emperor

public emperor getemperor()

}emperor.getemperor();//這下世界清淨了

真正進入單例模式的世界吧

**

public class singleton

//通過該方法獲得例項物件

public static singleton getsingleton()

//類中其他的方法

public static void dosomething()

}

優點

缺點

單例模式使用的場景

注意事項

另乙個問題:物件的複製

實現public class emperor{

//定義最多能產生的例項數量

private static int maxnumberemperor=2;

//每個皇帝都有自己的名字,使用乙個arraylist來容納,每個物件的私有屬性

private static arraylistnamelist = new arraylist();

//定義乙個列表,容納所有的皇帝例項

private static arraylistemperorlist=new arratlist();

//當前皇帝的序列號

private static int countnumofemperor=0;

//產生所有的物件

static{

for(int i=0;i

設計模式之禪 單例模式

優點 只有乙個例項,減少了記憶體開支,特別是當乙個物件需要頻繁地建立,銷毀時。缺點 單例模式沒有介面,擴充套件很困難,對測試也不利。上面的例子在併發的情況下,會有執行緒安全的問題出現。解決方法是在獲取singleton物件的方法上加上synchronized。public class mutilsi...

設計模式之禪 單例模式

singleton pattern ensure a class has only one instance,and provide a global point of access to it.確保乙個類只有乙個例項 物件 而且自行例項化並且像整個系統提供這個例項 餓漢式單例 public cla...

設計模式之禪 單例模式

個人blog 此篇博文位址 單例模式 確保乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。demo 通用檢視 餓漢式 單例通用 模板 public class singleton public static singleton getsingleton public static voi...