2008-10-10 62 views
0

即时通讯创建一个工厂类,将构造并返回一个对象。我通常会在数据访问层完成所有的数据工作,但我不认为我可以达到我的目标,但仍然这样做。我想要做的就是使用SQLDataReader快速读取数据信息并填充要从工厂返回的对象。这是一个愚蠢的想法吗?有更好的方法吗?如果可能的话,我宁愿不仅从DAL返回一个DataSet,还是它是一个性能与可维护性的问题?工厂类 - 我应该在这里用数据填充我的对象吗?

回答

1

在大多数情况下,这是一个好主意,因为这种方式提供了两大好处:

  1. 这种方式可以单独的数据访问和业务逻辑,如果更改数据库设计的上层算法,这意味着不需要改变。

  2. 从面向对象的立场来看,要转换一些纯数据为对象,也可以添加行为的对象,这使得代码更易于维护和可重复使用的。

0

如果你确定你要使用你从SqlDataReader的加载数据的,那么,你可以在工厂的建设时间做到这一点。但是,如果数据集有很多字段,只有少数字段会被使用,那么在访问者被调用时按需加载数据会更好地利用资源。

不过,我建议你加载它在出厂的时候你把所有的“作品”在手,如果它是不准确的,你就会知道什么需要修理。总是从可能有效的最简单的事情开始。

+0

非常感谢您对您的意见,这也是我会尝试。 – schmoopy 2008-10-10 00:51:15

0

我想说这取决于您对工厂的预期用途。如果这是您的数据访问层上的一个工厂,它将用于使用数据库中的数据填充业务对象,那么是的,这是做这件事的地方。 (IRepository模式就像这样...)。

如果工厂不打算住在靠近你的数据访问代码,我将让他们分开。记住Single Responsibility Principle:对象应该只有一个改变的理由。如果工厂只是用数据填充对象,那么这是一个合适的用途,但是如果它除了做其他事情之外还用数据填充对象,那么最好不要添加数据。

有取舍无论怎样你走了,所以一般我喜欢想保持物体尽可能简单,只要可能的。

相关问题