2014-11-03 52 views
2

我已經閱讀了大量關於網絡和堆棧的討論,聲稱單身人士是邪惡的。 像: root-cause-of-singletonsWhy is Singleton considered an anti-pattern?Java Spring服務是單身嗎?

我讀到這樣的評論「單身使代碼複雜,疼痛重用和測試」。 我使用的是具有無狀態單例的Spring服務的代碼,我無法看到這些點在這裏如何保存。

這樣的服務是否也被認定爲不好的做法,爲什麼?或者所有的辯論都只限於有狀態的單身人士?

+1

邪惡只與有狀態的單身人士 – ControlAltDel 2014-11-03 17:59:53

+0

@ControlAltDel我不明白爲什麼這個問題是「主要是基於意見」。正如Marko所回答的那樣,我指出的辯論顯然是單身模式,並且與Spring的單身人士沒有關係。 – tunetopj 2014-11-04 19:00:45

回答

5

你與Singleton設計模式,其患有的問題,談到你提及物質混淆Spring的單身人士(普遍好事)。

Singleton模式假定存在引用單例對象的全局變量static。它通常還會假定用於管理單例生命週期的許多樣板代碼(例如,懶惰地初始化它)。

Spring既不會讓您實現Singleton模式,也不會在內部使用它。 Spring單例是通過聲明創建的,並將它們連接在一起形成完整的對象圖,包括循環依賴關係的解析。

3

(註釋爲答案可讀性。)

單身本質上並沒有邪惡,他們只是很容​​易誤用。

如果你是不管理對象的單身性問題,甚至沒有問題。

我不同意其他有關單身人士的狀態;雖然它可以做錯,但有許多單身模式的狀態工作得很好,例如一個池。

2

春天的單身漢是有罪的,如果它是有狀態的。無狀態單是細:

  • 沒有場,
  • 無國籍字段(例如數據源),在啓動時進行初始化。