小编Ber*_*syn的帖子

DDD - 如何补水

问题:从存储库中重新合成聚合的最佳,有效和面向未来的方法是什么?提供方式的专家和内容是什么,我的看法是否正确?

假设我们有一个带私有setter的Aggregate Root,但是有一个用于访问状态的公共getter

行为是通过聚合根上的方法完成的.

指示存储库加载聚合.

目前我看到了几种可能的方法来实现这一目标:

  1. 通过反射设置状态(手动或自动,例如Automapper)
  2. make 构造函数接受属性,以便设置状态
  3. 使用状态对象加载聚合

1)Jimmy Bogard暗示他的工具Automapper不适用于双向映射.但有些人认为我们必须务实,以一种帮助你的方式使用工具.

对我来说,我不喜欢通过反射完全补液.也许Automapper存在,或者聚合根被弯曲,这样就可以完成映射(参见Vaughn对他的文章的一些评论).

2)创建用于补液的构造因子,具有几个参数,因此聚集体的状态以正确的方式再水合.

这几个参数可以扩展(=新构造函数)或定义可以更改.我喜欢这种方法,除了有一堆参数的部分.

3)状态是聚合根的属性.状态被封装在一个新对象中,该对象由存储库构建,然后被提供给聚合根以获得正确的init.

有些人认为构建这个状态对象是更多的工作(新类,实体上的状态属性暴露和聚合根来强制执行业务规则),但它提供了一种初始化状态的简洁方法.

假设我们需要事件源,加载状态是否类似于加载事件?状态对象是否提供了处理事件的方法?它是未来的证据吗?

domain-driven-design aggregate automapper

5
推荐指数
1
解决办法
1184
查看次数