【发布时间】:2008-11-21 16:18:18
【问题描述】:
DDD 的租户之一是不允许您的对象进入无效状态。对我来说,这意味着不应该有一个公共的无参数构造函数,因为这将是一个 99% 的时间处于无效状态的对象。
这是前进的好方法吗?当您只想快速上新课程时,它会变成一个巨大的 PITA。
【问题讨论】:
标签: constructor domain-driven-design
DDD 的租户之一是不允许您的对象进入无效状态。对我来说,这意味着不应该有一个公共的无参数构造函数,因为这将是一个 99% 的时间处于无效状态的对象。
这是前进的好方法吗?当您只想快速上新课程时,它会变成一个巨大的 PITA。
【问题讨论】:
标签: constructor domain-driven-design
好问题。我有 DDD 纳粹朋友说无参数构造函数是魔鬼。我在一定程度上同意这一点,但我也觉得这取决于课程的目的。
【讨论】:
正如 Kilhoffer 所说,这取决于您要对班级做什么。在什么情况下,您希望在不实际初始化属性的情况下新建一个类?如果您希望调用不需要任何数据的实例方法,您可以考虑将这些方法标记为静态或将这些方法移动到单独的类中。您的班级也可能有一个额外的有效状态 - 完全为空。
就个人而言,我相信一切都是适度的。如果 PITA 因子很高,并且您有理由确定不会遇到问题,那么似乎无参数构造函数就可以了。在某些时候,我认为这会成为一个见仁见智的问题。
【讨论】:
这完全取决于谁调用了构造函数。如果只有您的工厂这样做,那么就没有问题,因为您的工厂方法成为“域端”构造函数,而真正的构造函数是实现细节。
【讨论】: