我有一个相对简单的域模型,如图所示。我想在 DDD 定义的域对象中维护这个逻辑。
每个域对象都是一个抽象类,只包含其各自的成员和域逻辑。这些类的具体实现由存储库返回,提供给服务(使用 DI)。
我遇到的麻烦是了解如何处理创建新实体所需的情况。例如,域逻辑规定:
可以将帐户添加到Group
(创建Member
实体)。
将帐户添加到组时,新
Member
实体的Value
属性必须设置为已在Group
.Group 的每个其他成员的值都必须增加 1。
我可以将其实现Member AddMember(Account account)
为Group
. 但是,此方法需要以某种方式实例化一个新Member
的以添加到 Group 的 Members 集合中。
由于域对象没有对应用程序中更上层的层的引用,并且域对象本身是抽象的,我不确定如何构建 Member 的新实例。
我考虑过abstract protected Member CreateMember()
在对象上定义一个具体实现可以实现的方法的可能性,Group
但这对我来说似乎很混乱,并且让我担心我可能误解了更基本的东西。
在努力忠于 DDD 原则的同时,我将如何实施这个模型?