Domain driven design 领域驱动设计(DDD)中的POCO

Domain driven design 领域驱动设计(DDD)中的POCO,domain-driven-design,poco,Domain Driven Design,Poco,POCO类在域驱动设计中有行为,例如Validate()方法,是真的吗?是的,域驱动设计中的域模型类应该关注行为,如果这是您的意思的话。是-实体封装对象的数据和行为-因此它不再是一个普通的旧契约对象,而是一个域对象 一种思考方法是想象其他代码都看不到对象的属性,因此它们无法 if (myDomainObject.Name != null) ... 他们必须打电话 if (myDomainObject.IsValid()) ... 当您更改使其有效的规则时,只需在域对象中进行更改,因为您已阻止

POCO类在域驱动设计中有行为,例如
Validate()
方法,是真的吗?

是的,域驱动设计中的域模型类应该关注行为,如果这是您的意思的话。

是-实体封装对象的数据和行为-因此它不再是一个普通的旧契约对象,而是一个域对象

一种思考方法是想象其他代码都看不到对象的属性,因此它们无法

if (myDomainObject.Name != null) ...
他们必须打电话

if (myDomainObject.IsValid()) ...

当您更改使其有效的规则时,只需在域对象中进行更改,因为您已阻止逻辑泄漏到使用它的代码中。

否。它们没有类似于
验证()的方法。

DDD实体应始终处于有效状态。这就是为什么我们在类上使用行为(方法),而不是公共属性设置器

这种方法是否会导致POCO具有依赖性


不。通常情况下,一切都取决于DDD模型,反之亦然。

域类(POCO)当然应该包含相关行为。诸如
Validate
之类的验证方法是否属于实体类(POCO)是有争议的。很多时候,最好让实体始终有效。这种方法会导致POCO具有依赖性吗?依赖于什么?这种方法迫使您在尝试创建实体(POCO)之前确保拥有有效的数据。例如,验证可以在UI中执行。您的意思是实体而不是POCO,对吗?POCO与域实体正交。您可以有非实体POCO和非POCO实体。关于DDD,非POCO实体可能有点可疑,但我可以互换使用POCO和实体。更具体地说,我的意思是实体被表示为POCO。是的,谢谢。这种方法会导致POCO具有依赖性吗?域模型中的类不应该对应用程序的其他模块具有任何依赖性。