从战略设计,挖掘角色和活动之间的关联,战术设计转变成,挖掘关键对象之间的关联关系。
1,通过领域故事陈述法,可以跟领域专家和产品,程序员定义通用语言,确定****业务流程,对用户故事进行分解,最后达成对领域进行划分。
2,在战略设计阶段,使用领域故事陈述法非常有用,但是在战术设计阶段,上面的图只能描述 角色的行为活动。不能描述重要的对象之间的关系,没有描述对象与对象之间的协作来完成的功能,这样还是不知道怎么编写代码。
同样使用领域故事陈述法,将对象之间的关系进行描述:对象之间的关系,怎么确定呢,有那两种关系呢?
3,对象之间的两种关系:对象组成和对象业务状态绑定两种关联。
1,对象状态变更提供数据:对象创建,已存在对象状态变化。
2,一个对象变更导致另外一个对象变更:
1,对象状态变更提供数据,对象的创建,例如:售卖机商品列表,需要商品库存信息和商品信息才能组成商品列表信息。
2,一个对象变更影响另外一个对象:例如:订单的状态,应该支付的状态,支付状态影响到了订单的状态。
数据元
定义:也称数据元素,是用一组属性描述其定义、标识、表示和允许值的数据单元,将若干个具有相关性的数据元按照一定的次序组成一个整体结构即为数据模型
数据元的基本属性
1.标识类属性:适用于数据元标识的属性(包括中文名称、英文名称、中文全拼、内部标识符、版本、注册机构、同义名称、语境)
2.定义类属性:描述数据元语义方面的属性(包括定义、对象类词、特性词、应用约束)
3.关系类属性:描述数据元直接相互关联(或)数据元与模式、数据元概念、对象、实体之间关联的属性。包括分类方案、分类方案值、关系
4.表示类属性:描述数据元表示方面的属性(包括表示词、数据类型、数据格式、值域、计量单位)
5.管理类属性:描述数据元管理与控制方面的属性(包括状态、提交机构、批准日期、备注)
数据元的基本组成
组成:对象类+特性+表示
统一语言
领域服务
领域事件
实体
值对象
分层架构
限界上下文
实体
定义:有身份标识ID、属性、行为
ID类型:
1.通用类型:没有业务含义
2.领域类型:有业务含义
属性:
1.原子属性(整型、布尔、字符串)
2.自定义类型
行为:
1.状态变更行为(有副作用)
2.自给自足行为(无副作用)
3.互为协作行为
实体是通过ID来定义的,要着重考虑ID在对象生命周期的连续性和唯一性
值对象
值对象的判断依据:
1.相等性:
1.1 属性值变化,就产生了另一个完全不同的对象。
1.2 无需管理生命周期,可随时创建和销毁
2.不变性
2.1 值对象是不可变类,属性不可更改
3.独立性
3.1 值对象依附实体存在,需要单独存在就需要升级为实体
在不同的上下文,同一领域概念值对象可以定义为不同设计类型
值对象的行为
1.自我验证(非空、取值范围、类型)
2.自我组合(重量的单位和数值)
3.自我运算
关联
关联的弊端:过度的关联使得元素间的耦合度变高,尽量避免双向关联
如何使得关联更易于控制?
1.指定一个方向关联
2.通过限定符来减少多重的关联
3.清楚不必要的关联
工厂
定义:创建、重组复杂的对象聚合,并保持内部结构的良好封装
仓储和工厂的关系
1.工厂是对象生命周期的开始,仓储帮助管理生命周期的中间和结束
2.
深层模型
隐含概念变成显示概念:将约束分解出来,使之成为一个对象