DDD +公共无参数构造函数 - 它们应该存在吗?

时间:2008-11-21 16:18:18

标签: constructor domain-driven-design

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

这是向前发展的好方法吗?当你想要快速上课时,它就变成了一个巨大的PITA。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

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