是不是很好,每個PHP類都實現一個Singleton模式?我認爲,由於它會減少內存使用量。這是對的意見嗎?謝謝!是不是很好,每個PHP類實現一個Singleton模式
1
A
回答
10
軟件旨在模擬現實。這就是OOP的存在方式。說,辛格爾頓不是所有釘子的錘子。你可以在某些模型中使用它,但也有其他的模塊根本無法調整。
以建模人員列表爲例。如果您決定創建一個Person類,那麼您將不允許您的模型擁有多個人。
1
有一個簡單的規則:如果確定某個類只能使用一次,請實現Singleton。如果需要多次使用,請不要這樣做。
如果你的程序只有一個單一實例的類,它看起來像一個主要的代碼氣味,不適合面向對象編程。
8
如果你所有的類都是單身人士,爲什麼要使用類?
單身在某些情況下是有用的,但往往是過度使用。如果你可以脫離單身人士,那麼你可能不需要爲他們預期的面向對象的用途而使用類。不過,它們仍然可以用於代碼模塊化。
一般來說,當你有多個類的實例時,類是最有用的。類是對象的藍圖,因此您可以創建許多具有類似行爲但通常具有不同內部狀態的對象。
所以,如果所有的類都是單身,我會退後一步,問了幾個問題:
- 你需要的課?
- 您是否正確思考了您的軟件如何模擬您正在嘗試解決的問題?
1
這似乎是一個非常糟糕的主意。我建議在會話(如果是每個用戶)或緩存(如果是每個服務器)之間保留你需要的任何數據。至於內存的使用情況,它不應該使與有很大不同。
0
其實它是(結合工廠),以Kohana 3 Framework爲例;
它使用單件/工廠組合,只要有可能。
0
這是可能的,它只是不會是面向對象設計。 OOP是,意思是,以簡化3個主要屬性的結構:繼承(即共同的類共享相同的接口),多態性(即子類化)和封裝(即對你的對象有一個黑盒子方法)。
單身人士,雖然他們可以被擴展和抽象,通常不是基本上把OOP好東西放在你的範圍之外。這將是一些原始程序化編程與全球範圍內的所有命名空間。
相關問題
- 1. 這是Singleton模式的一個很好的用法嗎?
- 2. Singleton模式是RedissonClient的一個很好的用例嗎?
- 3. 這是一個很好的實現gameloop
- 4. 不是一個Singleton
- 5. 這是一個很好的數據模型來實現強類型角色嗎?
- 6. 什麼是一個很好的項目來學習現代模式和實踐?
- 7. 是否有一個很好的設計模式來實現可選功能?
- 8. NHibernate和狀態模式持久性 - 一個很好的實現?
- 9. MySQL + PHP:實現一個好的模型
- 10. Spring ACL是一個很好的ACL實現嗎?
- 11. SQL中的單行表:這是一個很好的實現嗎?
- 12. Erlang中一個很好的OpenID實現?
- 13. 在同一個文件中聲明新的類是不是很好的「形式」?
- 14. 實現一個「LazyProperty」類 - 這是個好主意嗎?
- 15. 基於類型創建唯一標識是否有一個很好的模式?
- 16. 灰燼混入 - 這是一個很好的方式,實現「動態」佈局
- 17. 這是裝飾者模式的一個很好的用法嗎?
- 18. 這是一個很好的裝飾模式的JavaScript?
- 19. Maybes是scala的一個很好的模式嗎?
- 20. Flyweight模式的一個很好的例子是什麼?
- 21. 這是一個很好的例子爲策略模式
- 22. Javascript命名空間 - 這是一個很好的模式嗎?
- 23. 這是一個很好的策略模式用例嗎?
- 24. 這是一個很好的位置數據庫模式
- 25. 一個很好的方式來實現l.php像Facebook一樣?
- 26. 在一個文件中有多個類定義是不是很好的做法?
- 27. 使用一個很好的SQL查詢而不是PHP代碼
- 28. 這是一個很好的設計Scala API的返回類型模式嗎?
- 29. 這將是一個很好的模式進行分類基於層次對象
- 30. 「類不是一個模板」
謝謝大家!我得到了答案。我的問題是不正確的。 – Sbioko 2010-03-23 14:57:25