【问题标题】:Factory Class - Should i populate my object with data here?工厂类 - 我应该在这里用数据填充我的对象吗?
【发布时间】:2008-10-10 00:43:46
【问题描述】:

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

【问题讨论】:

    标签: c# .net factory


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 非常感谢您的评论,这就是我会尝试的。
      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-09
        • 1970-01-01
        • 2014-04-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多