工厂类 - 我应该在这里用数据填充我的对象吗?

时间:2008-10-10 00:43:46

标签: c# .net factory

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

3 个答案:

答案 0 :(得分:1)

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

  1. 通过这种方式,您可以分离数据访问和业务逻辑,这意味着如果您更改数据库设计,则无需更改上层算法。

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

答案 1 :(得分:0)

如果您确定要使用从SQLDataReader加载的所有数据,那么是的,您可以在工厂的施工时间进行。但是,如果数据集有许多字段,只有少数字段会被使用,那么在调用访问器时需要加载数据将更好地利用资源。

那就是说,我建议你手头拿着所有的“碎片”在工厂加载它,如果它不完全正确,你就会知道需要修理什么。始终从最简单的事情开始。

答案 2 :(得分:0)

我想说这取决于您对工厂的预期用途。如果这是数据访问层上的工厂,它将用于使用数据库中的数据填充业务对象,那么这是可以执行此操作的地方。 (IRepository模式就是这样......等等。

如果您的工厂不打算靠近您的数据访问代码,我会将它们分开。请记住Single Responsibility Principle:对象应该只有一个原因需要更改。如果工厂只是使用数据填充对象,那么这是一个合适的用途,但是如果除了执行其他操作之外它还使用数据填充对象,那么最好不要添加数据。

无论你采取哪种方式都需要权衡,所以我一般希望尽可能保持对象尽可能简单。