2011-06-09 28 views
3

我正在做一個支持Singleton使用的類(有一個實例可用),但它也支持普通的實例使用(通過公共構造函數)。你稱爲「單身」,允許一個公共構造函數的額外實例?

如果你只想要一個,使用那個。如果你想要5,新的他們。

我顯然不能調用這個單例,或者其他一些開發者會來,使我的構造函數非公開。我可以怎樣稱呼它以指示如何使用它?命名很難。

一些猜測爲您的娛樂: 「StaticallyAvailable」? 「ThreadReady」? 「SingletonOptional」?

+0

選擇性單身.. – Nik 2011-06-09 13:47:28

回答

3

這聽起來像你有一個「默認實例」。你可以沿着這些線命名你的對象。

+0

這是一個很好的名稱,如果我們必須調用構造的東西。 – 2011-06-09 13:56:22

+0

這個名字適合我的情況最好,但其他名字也非常好!感謝StackOverflow! – 2011-06-09 14:21:37

1

通常,單例的一點是針對具有唯一實例的對象。如果該類的多個副本可以存在,那麼這意味着「單一性」不是必需的行爲。這就像任何其他物體一樣。

也許,你爲什麼把它編碼爲Singleton的原因是全局訪問。把它稱爲一個全局對象。

1

A Pool?

(ESP如果你知道怎麼樣的情況下早算,但要封裝一些建設的行爲/破壞)

+0

我真的很喜歡Pool,但我想象一些開發者會進入我的身後,並使它擁有所有新的實例,而不是一個共享實例。 – 2011-06-09 14:27:28

1

這聽起來不像一個單身對我來說,這聽起來像一個普通類總是至少有一個實例。調用這個單例,並將代碼編寫爲一個代碼(例如private static MySingleton instance = new MySingleton();)令人困惑 - 以某種方式將「始終存在」實例從類定義中解耦。在你的實現中明確指出,這是一個正常的類,它恰好總是至少有一個實例。

0

您可以創建一個默認實例獲取器。

private TheClass defaultInstance; 
public Default{ get{ return defaultInstance??(defaultInstance = new TheClass());} 
相關問題