在学习DDD过程中了解到,DDD思想里 有 实体,值对象,领域服务,聚合,聚合根 等相关概念, 且聚合间业务的交互应通过聚合根传递交互,以达到聚合内规则的一致性,所以正常来说一个仓储上下文对应一个聚合根,一个聚合内的实体,通过聚合根的上下文提交存储达到事务一致性。
领域服务按分层来说可分有
1.Domin.Service 领域层服务,自己的理解是 无关业务状态的方法,用于协调一个聚合内的实体间的相互引用的方法。
2.Applicatin.Service 应用层服务,自己的理解是 面向用例的,多个聚合间相互作用协调的方法
以上是自己的一些理解。 现实系统中,到底怎么划分以下开发场景的概念,哪位大佬指点下:
单位组织机构,包含对象有:【单位】>【园区】>【楼栋】>【楼层】>【房间】>【床位】
其中【房间】对象还包含着 【房间类型】 概念, 【房间类型】影响着【床位】
之间的结构关系就是:向下包含的树形结构。
根据页面上的业务场景大概有:
1.创建以上任意的一个对象,且同时创建了 它 层级往下的对象,即如:【创建楼栋】操作,要同时生成楼栋以下的 楼层,房间,床位。
2.单个新增【房间】,【床位】等操作
脑子里的疑惑:
1.以上对象究竟是不是一个聚合? 如果是一个聚合,那个是聚合根?假设【单位】对象是聚合根, 仓储以聚合根出发,那怎么可以做到 新增单个 房间,床位。况且 【房间】这个对象所包含的概念还有很多, 如果 房间类型, 房间费用 等等。统一通过【单位】这个聚合根维护感觉不太合理
2.如果以上的几个对象都是 聚合根,各种有自己的仓储上下文, 那新增对象同时包含下级对象时,就要多个聚合间协作,按理说 就要用 服务方法来做, 放在 Applicatin.Service 应用层服务里, 但感觉 就会很臃肿,该层有大量引用, 且 事务一致性 也有影响。
3.不怎么理解 领域服务的概念 什么叫 不影响 对象状态 的行为 ? 什么叫对象状态。懵逼
啰嗦了点,请大家教教我,或者有好的文章推荐推荐,当然直接上Demo 代码更是感激不尽
别去较真这种玩意,扯那么多无用的概念还不如把面向对象学学好
不知道,最好公司有实际项目学习,否则...确实不好理解,然后,学了也无用武之地