即时通讯创建一个工厂类,将构造并返回一个对象。我通常会在数据访问层完成所有的数据工作,但我不认为我可以达到我的目标,但仍然这样做。我想要做的就是使用SQLDataReader快速读取数据信息并填充要从工厂返回的对象。这是一个愚蠢的想法吗?有更好的方法吗?如果可能的话,我宁愿不仅从DAL返回一个DataSet,还是它是一个性能与可维护性的问题?工厂类 - 我应该在这里用数据填充我的对象吗?
0
A
回答
1
在大多数情况下,这是一个好主意,因为这种方式提供了两大好处:
这种方式可以单独的数据访问和业务逻辑,如果更改数据库设计的上层算法,这意味着不需要改变。
从面向对象的立场来看,要转换一些纯数据为对象,也可以添加行为的对象,这使得代码更易于维护和可重复使用的。
0
如果你确定你要使用你从SqlDataReader的加载数据的,那么,你可以在工厂的建设时间做到这一点。但是,如果数据集有很多字段,只有少数字段会被使用,那么在访问者被调用时按需加载数据会更好地利用资源。
不过,我建议你加载它在出厂的时候你把所有的“作品”在手,如果它是不准确的,你就会知道什么需要修理。总是从可能有效的最简单的事情开始。
0
我想说这取决于您对工厂的预期用途。如果这是您的数据访问层上的一个工厂,它将用于使用数据库中的数据填充业务对象,那么是的,这是做这件事的地方。 (IRepository模式就像这样...)。
如果工厂不打算住在靠近你的数据访问代码,我将让他们分开。记住Single Responsibility Principle:对象应该只有一个改变的理由。如果工厂只是用数据填充对象,那么这是一个合适的用途,但是如果它除了做其他事情之外还用数据填充对象,那么最好不要添加数据。
有取舍无论怎样你走了,所以一般我喜欢想保持物体尽可能简单,只要可能的。
相关问题
- 1. 我应该在这里使用工厂
- 2. 我应该在这里使用eval()吗?
- 3. 我应该在这里使用CUDA吗?
- 4. 我应该在哪里定义我的NinjectModule和我的工厂?
- 5. 我应该在抽象工厂创建的对象上调用ioc.release()吗?
- 6. 我应该在这里实施IDisposable吗?
- 7. 我应该在这里合并吗?
- 8. 该数据对象我应该使用
- 9. 我应该在哪里创建对象?库?厂?
- 10. 我应该在哪里填充我的Zend_Navigation容器?
- 11. 我应该在这里使用协程或其他调度对象吗?
- 12. 我应该在这里使用元类吗?
- 13. 我应该使用getResource()。getStringArray()来填充大数组吗?
- 14. 我应该在哪里声明数据库对象
- 15. 在云代工厂预填充grails应用mysql数据库
- 16. 告诉,不要问原则 - 我应该在这里应用吗?
- 17. 我应该使用Tiles对象吗?
- 18. 我在这里做错了什么?尝试使用对象填充和ArrayCollection
- 19. 用于使用域对象填充控制器的zf2工厂
- 20. 我的ViewModel的构造函数应该填充ViewModel的数据吗?
- 21. 我应该在这里使用朋友课吗?
- 22. UML依赖关系 - 我应该在这里使用它吗?
- 23. 工厂方法在这里适合吗?
- 24. 我应该在哪里放置AngularJS工厂和服务?
- 25. 我应该在这里使用枚举吗?
- 26. 我应该使用哪种数据结构进行位填充?
- 27. 我应该在这里使用哪种数据结构?
- 28. 我应该如何在Django模板中填充JSON数据?
- 29. 我应该如何在express.js页面布局中填充数据
- 30. 我应该在这里使用唯一索引吗?为什么?
非常感谢您对您的意见,这也是我会尝试。 – schmoopy 2008-10-10 00:51:15