天天看點

設計模式(一)---單例模式

單例模式

 英文名稱:(Singleton Pattern)

 定義:確定某一個類僅僅用一個執行個體,并且自行執行個體化并向整個系統提供這個執行個體

UML圖:

設計模式(一)---單例模式

(依照書本上的總結,自己了解并不太深刻。。)

 單例模式的長處:

  1、單例模式記憶體中僅僅有一個執行個體,降低記憶體開支,一個對象須要頻繁的建立和銷毀。

使用單例模式具有非常大的優勢。

  2、單例僅僅生成一個執行個體,降低系統的性能開銷。

  3、單例模式能夠在避免對資源的多重占用。

  4、單例模式能夠在系統設定全局的訪問點。優化和共享資源訪問。

  單例模式的缺點:

  1、單例模式一般沒有接口,擴充非常困難。

  2、單例對測試不利

  3、單例與單一職責原則有沖突。

  單例的使用場景:

  1、要求生成唯一序列号的環境

  2、在整個項目中須要一個共享訪問點或訪問資料

  3、建立一個對象須要消耗的資源過多

  4、須要定義大量的靜态常量和靜态方法。

單例的拓展

  通過單例的拓展,讓類僅僅産生兩個或者多個執行個體對象。

UML圖

設計模式(一)---單例模式

private static List<String> listNumofEmperor = new ArrayList<String>();

//表示目前編号

private static int currentNum = 0;

//建立出全部的對象

static{

for(int i=0;i<maxNum;i++)

listEmperor.add(new Emperor("執行個體化.."+(i+1)+"..對象"));

}

private Emperor(String name){

listNumofEmperor.add(name);

public static Emperor getEmperor(){

Random random = new Random();

currentNum = random.nextInt(maxNum);

return listEmperor.get(currentNum);

public void say(){

System.out.println(listNumofEmperor.get(currentNum));