2010-03-23 85 views

回答

10

軟件旨在模擬現實。這就是OOP的存在方式。說,辛格爾頓不是所有釘子的錘子。你可以在某些模型中使用它,但也有其他的模塊根本無法調整。

以建模人員列表爲例。如果您決定創建一個Person類,那麼您將不允許您的模型擁有多個人。

1

有一個簡單的規則:如果確定某個類只能使用一次,請實現Singleton。如果需要多次使用,請不要這樣做。

如果你的程序只有一個單一實例的類,它看起來像一個主要的代碼氣味,不適合面向對象編程。

8

如果你所有的類都是單身人士,爲什麼要使用類?

單身在某些情況下是有用的,但往往是過度使用。如果你可以脫離單身人士,那麼你可能不需要爲他們預期的面向對象的用途而使用類。不過,它們仍然可以用於代碼模塊化。

一般來說,當你有多個類的實例時,類是最有用的。類是對象的藍圖,因此您可以創建許多具有類似行爲但通常具有不同內部狀態的對象。

所以,如果所有的類都是單身,我會退後一步,問了幾個問題:

  • 你需要的課?
  • 您是否正確思考了您的軟件如何模擬您正在嘗試解決的問題?
1

這似乎是一個非常糟糕的主意。我建議在會話(如果是每個用戶)或緩存(如果是每個服務器)之間保留你需要的任何數據。至於內存的使用情況,它不應該使有很大不同。

0

其實它是(結合工廠),以Kohana 3 Framework爲例;

它使用單件/工廠組合,只要有可能。

0

這是可能的,它只是不會是面向對象設計。 OOP是,意思是,以簡化3個主要屬性的結構:繼承(即共同的類共享相同的接口),多態性(即子類化)和封裝(即對你的對象有一個黑盒子方法)。

單身人士,雖然他們可以被擴展和抽象,通常不是基本上把OOP好東西放在你的範圍之外。這將是一些原始程序化編程與全球範圍內的所有命名空間。

相關問題