领域概念:领域即是业务。
领域模型概念:通过对象以及对象之间的关联关系的代码。
实体(Entity):需要一个固定的标识记录一条信息。
值类型(Value Object):无需固定标识记录信息。
四层结构:UI、Business Logic、Domain Object、Service,每层之间只之上调用,不允许Service 调用Domain Object信息。层与层之间通过接口进行访问,通过Ioc技术实现层之间的隔离。
聚合根:一组对象之间的聚合,一个业务场景当中提取一个聚合根,聚合内的对象访问只能通过聚合根进行。
领域的四种模型:
1 贫血模型
1) 只包含get/set 属性
2) 包含:Service、Dao、Domain
2 失血模型
1) 包含get/set属性
2) 包含domain Logic,不引用其它层,包含的Logic 只限定跟当前的 domain object 有关
3) 包含:Service、Dao、Domain(包含 domain logic)
3 充血模型
1) 包含get/set 属性
2) 包含domain Logic
3) 包含business object,合并大部分 domain Logic,business object,仍然包含Service 但是Service 主要负责跟持久化层进行通信
4) 包含:Service(很少的逻辑)、Dao、Domain(包含 domain logic、business logic)
4 胀血模型
1) 包含get/set 属性
2) 合并domain Logic,business logic
3) 包含:Dao、Domain
5 失血模型变种
1) 包含get/set属性
2) 包含domain Logic,不引用其它层。包含的Logic 只限定跟当前的 domain object 有关。Service 与Dao 合并。如果逻辑比较简单,数据库操作比较简单CRUD的话,合并。
3) 包含:Service、Domain
领域对象提取方法:四色原型。
1) 使用四色原则是为了更好的提取领域对象,分析客观世界。
2) 世界上所有的东西都是由“物质”以及“相互作用”所组成。
a) 物质是:不以人的意识形态而改变的客观存在。
b) 相互作用是:我们理解的各种活动,比如打架,聊天等。
3) 四色原型:
a) 时刻时间段原型(MI)
b) 参与地点事件原型(PPT)
c) 描述原型(Desc)
d) 角色原型(Role)
e) 例子:什么什么样的人或物以某种角色在什么时间参加了或者是做了什么事情。
- 其中什么什么是Desc。
- 人或者是物是PPT
- 某种角色是Role
- 什么时间参与是MI