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