有一个概念谈到了将 与 分离persistent layer
以domain layer
使domain layer
更健壮 - 它不依赖于存储库的实际实现persistence layer
,而仅依赖于存储库接口。
这意味着我们有:
IPersonRepository {...} // in domain layer
PersonCassandraRepository implements IPersonRepository {...} // in persistence layer
Person (Aggregate Root) {...}
现在,怎么样Person
?
在anemic-domain-model
我们可以有:
IPerson {...} // in domain layer
Person implements IPerson {...} // in persistence layer
为什么要把 Person 放在持久层?
因为它包含特定于实现的代码。
例如,它可能包含与 JPA 相关的注释,并且与存储库相同,我们不希望在我们的域层中实现数据存储特定的实现。
我们可以使用anemic-domain-model来完成上述操作,因为 Person 不包含任何域逻辑,这意味着我们可以将 Person 放在持久层中。
在贫血域模型中,数据与行为是分离的,因此 Person 的行为是由分离的服务完成的,而不是写在 Person 本身中。
我们不能使用rich-domain-model进行这种层分离,因为在这种情况下, Person 确实包含特定于域的逻辑。
您将如何在富域模型应用程序中进行这种层分离?
或者,也许您认为不需要它。