我可以重用值对象吗?
Can I reuse Value Objects?
根据领域驱动设计,我可以从外部来源导入和重用常见的值对象,如电子邮件、SocialSecurityNumber、货币等吗?
这似乎很糟糕,因为我在我的域的核心依赖外部代码,但另一方面,我似乎会通过一遍又一遍地重写相同的代码来重新发明轮子。
好吧...可以导入和重复使用诸如电子邮件、SSN 之类的通用内容。基本上,导入内容的问题在于它们可能在其原始有界上下文中有其他含义。例如,货币可能不是您域所需要的。但是电子邮件之类的东西足够通用,无关紧要。
tldr; 可以重复使用通用概念,只要它们足够通用,在您的域中表示相同的东西即可。
P.S:您可以在验证输入时更多地重复使用它们,即在域外。
我觉得最好用自己的值对象;在公共库中实现。
然后在您的值对象中,您可以将验证和规则检查分派给您提到的外部资源;而不是自己做。
您甚至可以在它们之上添加自己的验证规则。例如,您可以在名为 "CompanyEmail".
的 class 中放置禁止来自常见电子邮件提供商(如 gmail、hotmail 等)的电子邮件的电子邮件规则。
根据领域驱动设计,我可以从外部来源导入和重用常见的值对象,如电子邮件、SocialSecurityNumber、货币等吗?
这似乎很糟糕,因为我在我的域的核心依赖外部代码,但另一方面,我似乎会通过一遍又一遍地重写相同的代码来重新发明轮子。
好吧...可以导入和重复使用诸如电子邮件、SSN 之类的通用内容。基本上,导入内容的问题在于它们可能在其原始有界上下文中有其他含义。例如,货币可能不是您域所需要的。但是电子邮件之类的东西足够通用,无关紧要。
tldr; 可以重复使用通用概念,只要它们足够通用,在您的域中表示相同的东西即可。
P.S:您可以在验证输入时更多地重复使用它们,即在域外。
我觉得最好用自己的值对象;在公共库中实现。
然后在您的值对象中,您可以将验证和规则检查分派给您提到的外部资源;而不是自己做。
您甚至可以在它们之上添加自己的验证规则。例如,您可以在名为 "CompanyEmail".
的 class 中放置禁止来自常见电子邮件提供商(如 gmail、hotmail 等)的电子邮件的电子邮件规则。