即時通訊創建一個工廠類,將構造並返回一個對象。我通常會在數據訪問層完成所有的數據工作,但我不認爲我可以達到我的目標,但仍然這樣做。我想要做的就是使用SQLDataReader快速讀取數據信息並填充要從工廠返回的對象。這是一個愚蠢的想法嗎?有更好的方法嗎?如果可能的話,我寧願不僅從DAL返回一個DataSet,還是它是一個性能與可維護性的問題?工廠類 - 我應該在這裏用數據填充我的對象嗎?
0
A
回答
1
在大多數情況下,這是一個好主意,因爲這種方式提供了兩大好處:
這種方式可以單獨的數據訪問和業務邏輯,如果更改數據庫設計的上層算法,這意味着不需要改變。
從面向對象的立場來看,要轉換一些純數據爲對象,也可以添加行爲的對象,這使得代碼更易於維護和可重複使用的。
0
如果你確定你要使用你從SqlDataReader的加載數據的,那麼,你可以在工廠的建設時間做到這一點。但是,如果數據集有很多字段,只有少數字段會被使用,那麼在訪問者被調用時按需加載數據會更好地利用資源。
不過,我建議你加載它在出廠的時候你把所有的「作品」在手,如果它是不準確的,你就會知道什麼需要修理。總是從可能有效的最簡單的事情開始。
0
我想說這取決於您對工廠的預期用途。如果這是您的數據訪問層上的一個工廠,它將用於使用數據庫中的數據填充業務對象,那麼是的,這是做這件事的地方。 (IRepository模式就像這樣...)。
如果工廠不打算住在靠近你的數據訪問代碼,我將讓他們分開。記住Single Responsibility Principle:對象應該只有一個改變的理由。如果工廠只是用數據填充對象,那麼這是一個合適的用途,但是如果它除了做其他事情之外還用數據填充對象,那麼最好不要添加數據。
有取捨無論怎樣你走了,所以一般我喜歡想保持物體儘可能簡單,只要可能的。
相關問題
- 1. 我應該在這裏使用工廠
- 2. 我應該在這裏使用eval()嗎?
- 3. 我應該在這裏使用HttpResponseRedirect嗎?
- 4. 我應該在這裏使用CUDA嗎?
- 5. 我應該使用工廠模式嗎?
- 6. 我應該在哪裏定義我的NinjectModule和我的工廠?
- 7. 我應該在抽象工廠創建的對象上調用ioc.release()嗎?
- 8. 我應該在這裏實施IDisposable嗎?
- 9. 我應該在這裏合併嗎?
- 10. 該數據對象我應該使用
- 11. 我應該在哪裏創建對象?庫?廠?
- 12. 我應該在哪裏填充我的Zend_Navigation容器?
- 13. 我應該在這裏使用協程或其他調度對象嗎?
- 14. 我應該在這裏使用元類嗎?
- 15. 我應該使用getResource()。getStringArray()來填充大數組嗎?
- 16. 現在我應該停止學習Silverlight,HTML5 canvas/audio/video對象在這裏嗎?
- 17. 我應該在哪裏聲明數據庫對象
- 18. SOA + MVC - 我應該在哪裏填充實體的屬性?
- 19. 在雲代工廠預填充grails應用mysql數據庫
- 20. 告訴,不要問原則 - 我應該在這裏應用嗎?
- 21. 我應該在哪裏放這個對象屬性/屬性
- 22. 我的工廠應該創建所有對象實例嗎?包括新實體?
- 23. 我應該使用Tiles對象嗎?
- 24. 我在這裏做錯了什麼?嘗試使用對象填充和ArrayCollection
- 25. 我應該在這裏使用朋友課嗎?
- 26. 我應該在這裏使用接口嗎?
- 27. UML依賴關係 - 我應該在這裏使用它嗎?
- 28. 我的ViewModel的構造函數應該填充ViewModel的數據嗎?
- 29. 用於使用域對象填充控制器的zf2工廠
- 30. 我應該在這裏使用枚舉嗎?
非常感謝您對您的意見,這也是我會嘗試。 – schmoopy 2008-10-10 00:51:15