0

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

4

3 回答 3

1

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

  1. 这样您就可以将数据访问和业务逻辑分开,这意味着如果您更改数据库设计,则不需要更改上层算法。

  2. 从 OO 的角度来看,您正在将一些纯数据转换为对象,并且还可能向对象添加行为,这使得代码更易于维护和重用。

于 2008-10-10T01:13:44.493 回答
0

如果您确定要使用从 SQLDataReader 加载的所有数据,那么是的,您可以在工厂施工时进行。但是,如果数据集有很多字段,而只会使用其中的一小部分,那么在调用访问器时按需加载数据会更好地利用资源。

就是说,我建议您在手头有所有“零件”时将其装入工厂,如果不完全正确,您就会知道需要修复什么。始终从可能可行的最简单的事情开始。

于 2008-10-10T00:48:02.563 回答
0

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

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

无论您采用哪种方式,都需要权衡取舍,所以通常我喜欢尽可能长时间地保持对象尽可能简单。

于 2008-10-10T01:20:35.463 回答