为了账号安全,请及时绑定邮箱和手机立即绑定

【备战春招】第19天+如何生成对象关系图?

标签:
Java

课程名称:DDD(领域驱动设计)思想解读及优秀实践

课程章节: 战术设计

课程讲师: 尤达_技术咖啡

领域对象(Domain Object)也被称为实体类,它代表了业务的状态,且贯穿展现层、业务层和持久层,并最终被持久化到数据库中,可细分为 4 中类型:

PO(Persistent Object):持久化对象,表示持久层的数据结构(如数据库表);
DO(Domain Object):领域对象,即业务实体对象;
DTO(Data Transfer Object):数据传输对象,原来的目的是为 EJB 的分布式应用提供粗粒度的数据实体,以降低分布式调用的次数,提高分布式调用的性能,后来一般泛指用于展示层与服务层之间的数据传输对象,因此可以将 DTO 看成一个组合版的 DO;
VO(View Object):视图对象,用户展示层视图状态对应的对象。
从分层角度来说,PO,DO/DTO,VO 分别属于持久层、服务层、和展现层。对于简单模块来说,有时 PO、DO 和 VO 并没有什么区别,这时就没有必要分别定义 DO 和 VO 了,直接复用 PO 即可。

一个对象变更导致另外一个对象变更影响另外一个对象:例如:订单的状态,应该支付的状态,支付状态影响到了订单的状态。**

1,如何生成对象关系图?

第一步:先画出来,限界上下文模块。

第二步:画完限界上下文,从角色出发,角色引出第一个对象

第三步:找出对象创建或状态变更,所依赖的界限上下文,和对象。

第四步:重复第三步找到更多的对象,对象之间的调用可以是:事件通知(API调用和消息订阅(异步的方式))和命令通知

第五步:通过梳理出来的对象关系

战术模型如下图所示:

图片描述

设计元模型规定:只能由实体,值对象,领域服务和领域事件表示模型。聚合用于封装实体和值对象,并维持自己边界内所有对象的完整性。要访问聚合,只能通过聚合根的资源库,这就隐式地划定了边界和入口,有效控制了聚合内所有类型的领域对象。若聚合的创建逻辑比较复杂或存在可变性,可引入工厂来创建聚合内的领域对象。若牵涉到实体的状态变更,领域元模型建议使用领域事件来推动。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消