【问题标题】:DDD + Public Parameterless Constructors - Should They Exist?DDD + 公共无参数构造函数——它们应该存在吗?
【发布时间】:2008-11-21 16:18:18
【问题描述】:

DDD 的租户之一是不允许您的对象进入无效状态。对我来说,这意味着不应该有一个公共的无参数构造函数,因为这将是一个 99% 的时间处于无效状态的对象。

这是前进的好方法吗?当您只想快速上新课程时,它会变成一个巨大的 PITA。

【问题讨论】:

    标签: constructor domain-driven-design


    【解决方案1】:

    好问题。我有 DDD 纳粹朋友说无参数构造函数是魔鬼。我在一定程度上同意这一点,但我也觉得这取决于课程的目的。

    【讨论】:

      【解决方案2】:

      正如 Kilhoffer 所说,这取决于您要对班级做什么。在什么情况下,您希望在不实际初始化属性的情况下新建一个类?如果您希望调用不需要任何数据的实例方法,您可以考虑将这些方法标记为静态或将这些方法移动到单独的类中。您的班级也可能有一个额外的有效状态 - 完全为空。

      就个人而言,我相信一切都是适度的。如果 PITA 因子很高,并且您有理由确定不会遇到问题,那么似乎无参数构造函数就可以了。在某些时候,我认为这会成为一个见仁见智的问题。

      【讨论】:

        【解决方案3】:

        这完全取决于谁调用了构造函数。如果只有您的工厂这样做,那么就没有问题,因为您的工厂方法成为“域端”构造函数,而真正的构造函数是实现细节。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-08
          • 1970-01-01
          • 2016-06-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多