設計模式之單例設計模式,多例設計模式

2021-09-13 13:51:05 字數 1675 閱讀 8858

所謂的單例設計模式就是指乙個類只允許產生乙個例項化物件。

那麼如何保證乙個類只產生乙個例項化物件呢?

我們都知道,所有的類都會預設生成乙個無參構造,這個無參構造外部可以隨意呼叫,如果我們要限制在外部產生物件,那麼就可以自己寫乙個私有的構造方法,這樣預設生成的無參構造將不再產生,這個時候再進行物件例項化的時候,就會報錯,因為一旦構造方法私有化,外部就不能再呼叫構造即外部不能產生新的例項化物件。

但是這樣的話就徹底沒有物件了,那唯一的這乙個要怎麼產生呢?

由於private只能由類內部自己呼叫,那麼問題就解決了,我們可以讓單例類內部提供乙個產生好的物件singleton singleton = new singleton();。而類的內部屬性必須使用private修飾,還需要有getter()方法返回,這時又有乙個問題,這時的getter()方法是乙個普通方法,普通方法必須使用物件來呼叫,可是類的外部並沒有物件,這又要怎樣解決呢?

其實也不難,我們可以使用static來修飾這個getter()方法,讓它變成乙個靜態方法,而靜態方法可以直接由類名稱呼叫,這樣,所有的問題就解決啦!

(一般還會在前面追加乙個final關鍵字,讓其不再修改,不加也不會被修改,習慣而已)

**如下:

//餓漢式

class

singleton

public

static singleton getinstance()

}public

class

singletondesignpattern

}

單例設計模式還有另一種,懶漢式單例模式,與餓漢式單例模式差別在哪呢?

其實大體都一樣,只是懶漢式單例模式在第一次呼叫getter()方法的時候才new物件。

**如下:

//懶漢式

class

singleton

public

static singleton getinstance()

return singleton;}}

public

class

singletondesignpattern

}

懶漢式單例模式vs餓漢式單例模式:

餓漢式單例模式特點:

1、一開始就new物件,用的時候直接返回;

2、構造方法私有化,外部無法產生新的例項化物件,只能通過static方法取得例項化物件。

懶漢式單例模式特點:

1、當第一次使用singleton物件的時候才會為其產生例項化物件;

2、執行緒不安全

所謂的多例只是比單例多了一些例項化物件而已,依然是有限個數物件。

class

***private

***(

)public

static *** getinstance

(int flag)

}@override

public string tostring()

}public

class

multipledesignpatterns

}

不管是多例還是單例,都有以下共同點:

1、構造方法私有化

2、類內部一定會提供乙個static方法用於取得例項化物件

單例(多例)設計模式

單例設計模式 多例設計模式 主要是一種控制例項化物件產生個數的設計操作。單例設計 如果說現在有乙個程式類,假設該程式類的定義如下 class singleton public class stringdemo 但是由於某些要求,現在要求singleton這個類只允許提供有乙個例項化。那麼此時首先應該...

設計模式(五) 單例 多例模式

單例模式 singleton 保證類僅有乙個例項,並且提供乙個訪問它的全域性訪問點。多例模式 multitude pattern 負責建立 管理自己的多個例項,並且提供它們的全域性訪問點。單例模式 多例模式 不好的實現方法一 public class singleton else return si...

Java 單例 多例設計模式

單例和多例的設計模式特點就是構造方法被私有化,外部無法直接用 new 例項化。只能通過呼叫類內部提供的靜態方法取得例項。單例設計模式 餓漢式單例設計模式class singleton 定義全域性常量的時候直接例項化 private static final singleton instance ne...