领域反映到代码里就是模型,模型是对领域某个方面的抽象,并且可以用来解决相关域的问题,
Domain Model 的基础单元,分为实体和值对象两种。实体和值对象,二者是领域模型中非常紧张的基础领域对象(Domain Object,DO)。
2.1实体对象 (Entities):
有唯一标志的焦点领域对象(有ID,通过ID识别是否为同一个对象),且这个标志在整个软件生命周期中都不会发生变化。可类比和数据库打交道的Entity实体,差异的是DDD中这些实体会包含与该实体相关的业务逻辑,它是操作行为的载体。也就是说DO包含了业务字段和业务方法,要求强内聚且低耦合,实体的充血模型不包含持久化逻辑
2.2值对象( Value Object):
好比有的业务场景需要同一个聚合的 A 和 B 两个实体来共同完成,我们就可以将这段业务逻辑用领域服务来实现;
而有的业务场景需要聚合 C 和聚合 D 中的两个服务共同完成,这时你就可以用应用服务来组合这两个服务。
要点:Application Service 是业务流程的封装,不处理业务逻辑,怎样判断一段代码到底是业务流程照旧逻辑:
(1)不要有if/else分支逻辑
通常情况下,假如有分支逻辑的,都代表一些业务判断,那么,应该将逻辑封装到DomainService或者Entity里。但并非绝对。类似停止条件判断则不属于次