DDD专栏4:DDD如何保护领域模型
Posted roykingw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DDD专栏4:DDD如何保护领域模型相关的知识,希望对你有一定的参考价值。
04、DDD如何保护领域模型
上一讲中,我们已经提到了领域服务、实体和值对象的重要性,基于这些基础对象,就能够形成一个基础的领域模型。我们对这个领域模型进行一些贫血模型和充血模型的设计,就能搭建出一套基于领域模型设计的应用架构。这种应用架构由于功能相对内敛,所以很容易设计出“高内聚,低耦合”的高质量应用。但是设计出这样的基础领域模型其实还只是第一步,在后续领域模型具体落地的过程中,以及后续的业务需求迭代过程中,如何保护领域模型不退化,依然有很多问题需要解决。而这些问题,光靠领域模型本身是远远不够的,还需要有其他的武器,来帮助保护领域模型的稳定性。这时,就轮到聚合、仓库和工厂出场了。
聚合与聚合根
聚合
之前已经提到过,在DDD中,实体和值对象是最为基础的领域对象。实体一般对应业务对象,他具有业务属性和业务行为;而值对象主要是属性集合,对实体的状态和特征进行描述。但是,实体和值对象都是只个体化的对象,他们的行为表现出来的更多的是个体的能力。而如果需要让这些个体协同工作,那就还需要聚合(Aggregator)。例如在我们上一章节讨论的转账过程,单个账户的余额变动,体现的就是这种个体的业务能力。而用户扣减余额和商户增加余额这两个操作一起,才构成了转账这么一个业务。
聚合是用来确保这些领域对象在实现共同的业务逻辑时,能保证数据的一致性。 具体到业务中,他表达的就是真实业务中的整体与部分的关系。比如发票与发票明细、商品与商品描述等。这些关系在数据库中,可能是分散在不同的表中,而在设计领域实体时,也会设计成不同的实体。但是
以上是关于DDD专栏4:DDD如何保护领域模型的主要内容,如果未能解决你的问题,请参考以下文章