天天看點

Singleton(單件)--對象建立模式

Singleton(單件)–對象建立模式

一、意圖

保證一個類僅有一個執行個體,并提供一個通路它的全局通路點。

二、動機

1.在軟體系統中,經常有這樣一些特殊的類,必須保證它們在系統中隻存在一個執行個體,才能確定它們的邏輯正确性、以及良好的效率。

2.如何繞過正常的構造器,提供一種機制來保證一個類隻有一個執行個體?

3.這應該是類設計者的責任,而不是使用者的責任。

三、适用性

1.當類隻能有一個執行個體且客戶可以從一個衆所周知的通路點通路它時。

2.當這個唯一執行個體應該是通過子類化可擴充的,并且客戶應該無需更改代碼就能使用一個擴充的執行個體時。

四、結構

Singleton(單件)--對象建立模式

五、效果

1.對唯一執行個體通路的受控通路。

2.縮小名空間。

3.允許對操作和表示精化。

4.比類操作更靈活。

六、實作

1.保證一個唯一的執行個體。

2.建立Singleton類的子類。

七、要點總結

1.Singleton模式中的執行個體構造器可以設定為protected以允許子類派生。

2.Singleton模式一般不要支援拷貝構造和Clone接口,因為這些有可能導緻多個對象執行個體,與Singleton模式的初衷違背。

3.如何實作多線程環境下安全的Singleton?注意對雙檢查鎖的正确性實作。

八、舉例說明

比如要建一個全局的管理器,管理整個資源,或者建立唯一的IO通路接口,等等。

本文為李建忠設計模式視訊的筆記以及《設計模式-可複用面向對象的軟體的基礎》和自己的部分見解

繼續閱讀