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

Ray*_*und 0 domain-driven-design poco

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

Fen*_*ton 5

是的——“实体”封装了对象的数据和行为——所以它不再是一个普通的旧合约对象,它是一个域对象。

一种思考方式是想象你的其他代码都看不到对象的属性,所以他们不能做......

if (myDomainObject.Name != null) ...
Run Code Online (Sandbox Code Playgroud)

他们必须打电话

if (myDomainObject.IsValid()) ...
Run Code Online (Sandbox Code Playgroud)

当您更改有关使其有效的规则时,更改只需要在域对象中完成,因为您已阻止逻辑从外部泄漏到使用它的代码中。