1,引言

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


2.实体(Entity)

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

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

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

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

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

3.小结

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

08-17 01:50