如何在DDD中处理url段塞生成?
内部构造函数?但是实体依赖其他服务是不好的。
作为构造函数参数传递?我认为插件不应该出现在那里,因为它们不是业务需求。是吗?
或者只是有一个二传手?
发布于 2020-11-11 03:04:28
URL段似乎是您的域模型的一部分,尽管它一开始看起来像是一个基础设施问题。
如果您将其建模为实体的属性,我认为在构造函数参数中传递它没有问题。这当然比将它作为一个带有公共setter的属性,任何人随时都可以修改要好得多。
创建一个ISlugGenerator接口并将其注入适当的层(ApplicationService或DomainService,有关更多信息,请参阅here ),以生成URL字符串并在构造函数中将其传递给实体。
在表示层实现ISlugGenerator,该层实际包含要通过URL访问的页面/路由。
您可能会争辩说,URL实际上在域模型中没有位置,因为它只是一些与实体相关的信息,但并不用于任何决策过程。
那么,考虑一下电子商务应用中的Product Description或Product Image。这是一回事。您肯定有针对这些属性的验证逻辑,并且此验证应该是域的一部分,但您可能不会基于它们做出任何其他决策。
那么,您不应该从Product实体中删除Description和Image吗?实际上,不是。即使图像可能是一个URL,就像您的问题中的弹头一样。
产品将在其构造函数中以字符串参数的形式接收imageUrl,或者通过实体中的方法进行设置。但是imageUrl将由某个ImageUploadService生成,其接口将在应用层定义,并在某个基础架构层实现。
https://stackoverflow.com/questions/29011079
复制相似问题