DDD 中的域模型具有相同的行为
Domain model in DDD having same behaviors
我是 DDD 架构模式的新手。我正在根据捕获的用例设计我域中的行为。我并没有将逻辑放在仅创建签名的行为中。
我的问题是,当 2 个域模型共享或具有相同行为时,最佳方法是什么?
示例:我有一个 TimeEntry 域和一个 TimeApprover 域,它们都具有相同的行为 AddCommentToTime()。他们都有相同的行为,并最终坚持相同的逻辑 table.
在其他架构中,AddCommentToTime() 将被推送到某种类型的基础或抽象 class,以便 TimeEntry 和 TimeApprover 可以共享相同的代码。
但是在纯 DDD 中不应该有共享,那些域应该有独立的行为而不是 inherited/implemented 来自任何类型的基础或抽象 class?他们基本上应该是相互独立的。
我理解正确吗?
根据答案编辑
@Matthew 的回答帮助我重新审视了我实际想要完成的事情。
AddCommentToTime() 行为实际上属于完全不同的域。在重新查看我们正在实施的用例和数据设计之后,我意识到 AddCommentToTime() 实际上应该是 AddcommentToAssignment()。添加将有一个分配域。此分配域将知道如何添加评论。
首先要注意的是 DDD 不是架构模式,尽管您可以使用符合 DDD 方法的架构。
至于两个 类 在不同的领域(限界上下文?),如果它是一个微不足道的代码,我会复制它,否则你可以将它放入共享内核并从中继承。或者,您可以使用策略模式在 运行 时而不是编译时执行它,然后将策略实现再次放入内核。
我是 DDD 架构模式的新手。我正在根据捕获的用例设计我域中的行为。我并没有将逻辑放在仅创建签名的行为中。
我的问题是,当 2 个域模型共享或具有相同行为时,最佳方法是什么?
示例:我有一个 TimeEntry 域和一个 TimeApprover 域,它们都具有相同的行为 AddCommentToTime()。他们都有相同的行为,并最终坚持相同的逻辑 table.
在其他架构中,AddCommentToTime() 将被推送到某种类型的基础或抽象 class,以便 TimeEntry 和 TimeApprover 可以共享相同的代码。
但是在纯 DDD 中不应该有共享,那些域应该有独立的行为而不是 inherited/implemented 来自任何类型的基础或抽象 class?他们基本上应该是相互独立的。
我理解正确吗?
根据答案编辑
@Matthew 的回答帮助我重新审视了我实际想要完成的事情。
AddCommentToTime() 行为实际上属于完全不同的域。在重新查看我们正在实施的用例和数据设计之后,我意识到 AddCommentToTime() 实际上应该是 AddcommentToAssignment()。添加将有一个分配域。此分配域将知道如何添加评论。
首先要注意的是 DDD 不是架构模式,尽管您可以使用符合 DDD 方法的架构。
至于两个 类 在不同的领域(限界上下文?),如果它是一个微不足道的代码,我会复制它,否则你可以将它放入共享内核并从中继承。或者,您可以使用策略模式在 运行 时而不是编译时执行它,然后将策略实现再次放入内核。