0
A
回答
3
你不想讓工廠返回相同的實例。你希望他們返回新的實例。這是工廠的重點。 Singletons have no use in PHP.如果你想限制一個實例只有一個實例,那麼創建一次並將其注入需要的地方。
從性能角度看,返回相同實例或創建新實例是微不足道的。也就是說,除非你在ctor中做了非常昂貴的工作(比如連接到數據庫),否則你不應該這樣做。
對於單元測試,您希望您的工廠返回新鮮實例而不是相同的實例,因爲那將是全局狀態。測試應該孤立地進行,而不是從先前測試的某個實例的狀態仍然存在,因爲這樣更容易出錯。
1
返回相同的實例最適合於Singleton Pattern。工廠不應該關心他們正在返回什麼......只是它符合某些標準。
如果您的工廠正在返回數據庫連接,那麼最好是返回單身連接而不是創建一個新連接。
相關問題
- 1. PHP一個實例將返回#5
- 2. MongoServer.GetDatabase不返回同一個實例
- 3. 的Mockito thenReturn返回同一個實例
- 4. 返回一個對象的新實例
- 5. GetDefaultView返回新的實例
- 6. PHPUNIT - 返回實例化類2的同一個實例
- 7. 單例實例返回null
- 8. 返回單實例
- 9. 統一返回服務的新實例
- 10. 擴展一個返回的實例
- 11. 如何從Enum返回一個實例?
- 12. 如何返回一個類的實例?
- 13. 從模塊返回一個類實例?
- 14. 返回一個類的實例
- 15. InitialContext.lookup(ejbMappedName)返回一個新的實例或一箇舊的實例
- 16. 強制實體框架返回一個新的實例
- 17. 在Java中返回實例
- 18. 返回現有的實例
- 19. 在Python中返回實例
- 20. 腳本實例返回null
- 21. 返回VUE實例(Vue.js 2)
- 22. Python類實例返回值
- 23. Condition實例signalAll()不返回
- 24. Firebase實例Id返回null
- 25. 返回本地實例
- 26. 不返回接口實例的類PHP
- 27. Restkit [NSManagedObject managedObjectContext]返回不同的實例
- 28. 總是返回相同實例的類
- 29. 燦吉斯MapBinding返回不同實例
- 30. SharedPreferences值在新實例後返回null