实体 和 值对象:
DDD
领域设计中对象分为两种:实体Entity
和 值对象Value Object
。实体Entity
对象 代表具有唯一ID
的领域对象。值对象Value Object
代表一成不变的、本质性的事务,不具有唯一的ID
。
实体Entity
是和业务进行强关联的,随着业务的变更,除了唯一ID
不变之外,其他的所有属性都可能发生变化。
值对象Value Object
一般需要依赖实体对象来赋予业务价值。
实体对象与值对象的关系:实体对象和值对象在一定条件下是可以相互转化的,除了唯一ID
外的所有属性都是可以不断变化的。实体与实体之间通过ID
相关联。实体与值对象之间通过信息冗余进行关联。
领域服务:
服务表示的就是那些在领域对象之外的操作和行为。跨实体的业务操作,交由服务来协调。服务用来隔离业务逻辑与技术实现。
服务通常用于相应某些请求、调用某些操作。服务不能直接操作实体中的属性,而必须调用实体中的行为间接对属性进行操作。
防腐层:
防腐层Anti-Conrruption Layer
:隔离系统与外部依赖
聚合 和 聚合根:
聚合Aggregator
:实体和值对象体现的是个体的能力,聚合体现的是这些个体的系统工作能力。
聚合作用:聚合是用来确保这些领域对象在实现共同的业务逻辑时,能保证数据的一致性。
聚合根Aggregator Root
:每个聚合内部有一个外部访问聚合的唯一入口,称为聚合根。每个聚合中应确定唯一的聚合根实体。
仓库 和 工厂:
仓库Repository
和工厂隔离开了数据源和上层业务(领域实体)。