0

我正在为我的域对象构建工厂,因为它们的构造函数变得不整洁。我的问题是,我应该将约束测试转移到工厂,还是应该将它们留在域对象构造函数中?

测试大多只是检查在实例化对象之前是否提供了所需的参数,或者相关对象是否具有特定值。如果测试失败,他们通常只是抛出一个异常。

一方面,我认为逻辑属于领域对象,因为它是对象的重要组成部分。例如,没有名字的宠物就是无效的。

另一方面,我要迁移到工厂的几乎所有东西都是域对象的重要组成部分。(这是域对象工厂的结果,对吧?它破坏了域对象的封装?)

将它留在域中会更安全,但它不整洁。我的代码如果在工厂里会更易读,但如果有人不小心使用了new操作符而不是工厂,我就有麻烦了……

4

1 回答 1

1

如评论中所述,将验证保持在特定于域对象的状态会更好。这样,您的工厂就不会受到所有特定于上下文的验证规则的干扰。

如果您想集中工厂的错误处理,只需让工厂创建的每个类在尝试创建不符合验证要求的对象时抛出异常。您的工厂可以抓住并处理它们。

于 2013-07-15T02:27:17.000 回答