采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师OrderRepository为什么返回的对象是Order而不是OrderDo呢?如果Order中包含其他领域的值对象,是不是就不能直接调用Mapper查询而是需要调用其他领域的Service对领域对象完成服务编排和组合呢?这么做是否就违反了仓储的职责呢?
前面课程我们有讲过命名规范,我们课程里,Do表示data object,而不是domain object,data object处于基础设施层,是从存储层拿出来的数据对象,而不是领域对象。资源库扮演的是实体仓库的角色,返回的只能是实体,所以订单资源库只能返回订单实体,也就是Order对象。
明白了老师,可是后面的问题还是没说清楚,假设Order中的commodities中的某些字段信息需要从商品服务中获取,那是不是需要在OrderRepository进行一些远程调用来获取这些信息最终装配出一个完整的实体信息呢?
是的,这样做没有问题,可以在资源库的实现里访问远程服务。
只要没有违反资源库作为实体仓库的职责,以及整洁架构或者分层架构的架构原则就没有问题。所以我认为在资源库的实现里访问远程服务里没有任何问题。甚至极端情况下,资源库的实现只访问远程服务都没有问题,比如把外部商品库封装成内部商品库。
登录后可查看更多问答,登录/注册
结合智慧零售项目实践,深度解剖DDD思想与应用方法
709 5
690 5
677 5
1.2k 5
579 4