您的位置:首页 > 其它

DDD-领域模型-四色原型

2017-12-25 21:30 1516 查看
1.概念

四色原型是领域模型的一种原型,原型的意思是指领域中的任何模型及其关系都可以抽象为“四色原型”。

四色原型可以用这句话进行描述:

某个人(Party)的角色(PartyRole)在某个地点(Place)的角色(PlaceRole)用某个东西(Thing)

的角色(ThingRole)做了某件事情(MomentInterval)。

1. 时刻-时间段原型(Moment-Interval Archetype)

表示在某个时刻或某一段时间内发生的某个活动。使用粉红色表示,简写为MI。

2. 参与方-地点-物品原型(Part-Place-Thing Archetype)

表示参与某个活动的人或物,地点则是活动的发生地。使用绿色表示。简写为PPT。

 

3. 描述原型(Description Archetype)

表示对PPT的本质描述。它不是PPT的分类!Description是从PPT抽象出来的不变的共性的属性的集合。

使用蓝色表示,简写为DESC。

举个例子,有一个人叫张三,如果某个外星人问你张三是什么?你会怎么说?可能会说,张三是个人,但是外星人不知道“人”是什么。然后你会怎么办?你就会说:张三是个由一个头、两只手、两只脚,以及一个身体组成的客观存在。虽然这时外星人仍然不知道人是什么,但我已经可以借用这个例子向大家说明什么是“Description”了。在这个例子中,张三就是一个PPT,而“由一个头、两只手、两只脚,以及一个身体组成的客观存在”就是对张三的Description,头、手、脚、身体则是人的本质的不变的共性的属性的集合。但我们人类比较聪明,很会抽象总结和命名,已经把这个Description用一个字来代替了,那就是“人”。所以就有所谓的张三是人的说法。

4. 角色原型(Role Archetype)

角色就是我们平时所理解的“身份”。使用黄色表示,简写为Role。为什么会有角色这个概念?因为有些活动,只允许具有特定角色(身份)的PPT(参与者)才能参与该活动。比如一个人只有具有教师的角色才能上课(一种活动);一个人只有是一个合法公民才能参与选举和被选举;但是有些活动也是不需要角色的,比如一个人不需要具备任何角色就可以睡觉(一种活动)。当然,其实说人不需要角色就能睡觉也是错误的,错在哪里?因为我们可以这样理解:一个客观存在只要具有“人”的角色就能睡觉,其实这时候,我们已经把DESC当作角色来看待了。所以,其实角色这个概念是非常广的,不能用我们平时所理解的狭义的“身份”来理解,因为“教师”、“合法公民”、“人”都可以被作为角色来看待。因此,应该这样说:任何一个活动,都需要具有一定角色的参与者才能参与。

用一句话来概括四色原型就是:一个什么什么样的人或组织或物品以某种角色在某个时刻或某段时间内参与某个活动。

 其中“什么什么样的”就是DESC,

“人或组织或物品”就是PPT,

“角色”就是Role,

而”某个时刻或某段时间内的某个活动"就[b]是MI。 [/b]



划分聚合

MI和MIDetail是一个聚合,MI是聚合根。
PPT是一个聚合,PPT是一个聚合根。如果Des只“描述”PPT,那么这个Des会作为一个值对象隶属于属于PPT所在的聚合。
Des是一个聚合,Des是一个聚合根。前提你想“跟踪”Des关联的PPT。
Role不属于聚合,Role是一个带状态的领域服务,Role采用装饰器模式装饰PPT。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: