根据Domain-Driven Design,我可以从外部来源导入和重用常见的价值对象,如电子邮件,SocialSecurityNumber,货币等吗?
这似乎很糟糕,因为我依赖于我域中心的外部代码,但另一方面,似乎我会通过一遍又一遍地重写相同的代码来重新发明轮子。
答案 0 :(得分:5)
嗯......像电子邮件,SSN这样的通用东西可以导入和重用。基本上,导入的东西的问题在于它们可能在其原始有界环境中意味着其他东西。例如,Currency可能不是您的域所需的。但是像电子邮件这样的东西是非常通用的,不重要。
tldr; 可以重复使用通用概念,只要它们足够通用,即它们在您的域中的含义相同。
P.S:您可以在验证输入时更多地重复使用它们,即在域外。
答案 1 :(得分:1)
我认为最好使用自己的值对象;在公共图书馆中实施。
然后在您的值对象中,您可以将验证和规则检查分派给您提到的外部资源;他自己做的。
即使您可以在它们上面添加自己的验证规则。例如,您可以在名为" CompanyEmail"的类中放置一个禁止来自常见电子邮件提供商(如gmail,hotmail等)的电子邮件的电子邮件规则。