DDD(四)——实体(Entity)

本文探讨了领域驱动设计(DDD)中实体的概念及其在软件开发中的应用。对比传统实体,DDD实体强调唯一性和可变性,承载更多业务逻辑,如生成订单号、验证金额等,以减少服务层负担。文章还讨论了实体的贫血、充血和胀血状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1,引言

软件开发者大多趋向于将关注点放在数据上,而不是领域上。这对于刚入门的DDD的新手而言也是如此。以我目前的思考方式,数据库依然占据主要的地位。开发一个功能,首先我就会考虑我会用到哪些属性,这些属性又有什么外键关系,而不是直接在脑海中产生一个领域的概念,这样会将数据直接反应在对象上,这会产生大量的get和set方法,虽然现在有工具可以生成get和set,但这确不是DDD的做法。


2.实体(Entity)

实体本质、具体事物、个别主体、现象的支持者等意义,其含义一般是指能够独立存在的、作为一切属性的基础和万物本原的东西。

对于java而言,实体就是属性类,通常定义在model层里面。

而DDD中要求实体是唯一的且可持续变化的。意思是说在实体的生命周期内,无论其如何变化,其仍旧是同一个实体。唯一性由唯一的身份标识来决定的。可变性也正反映了实体本身的状态和行为。

为什么要使用实体?

当我们需要考虑一个对象的个性特征,或者需要区分不同的对象时,我们引入实体这个领域概念。

ddd的实体都做了些什么?

传统的实体只做值得传递作用,这无疑是相对浪费资源的,DDD的思想就是在实体中存在一些业务,例如:生成订单号,判断金额不能低于0.01等业务,这样可以减轻service层的压力。

3.小结

实体是存在贫血、充血、胀血这些特征,在之前的学习中有说到过,DDD的实体就是充血实体,传统的实体只有属性的实体称之为贫血实体,各有优劣。

转载于:https://my.oschina.net/u/4100388/blog/3093635

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值