3.2 将隐式概念转化为显示
发现现有设计问题和不足
和领域专家沟通
阅览领域书籍
研究领域先辈的开发经验
DDD--->MDD
约束---隐式规则
领域对象(领域行为,领域约束)
领域对象分为两种 实体对象 值对象
宿主对象
MDD 模型表达现实
数据库查询干扰领域
DDD 和软件工程 是什么关系
DDD 是软件设计思想
JAVA Spring 是编程工具,思想指导工具的使用方式。
3.3 柔性设计
命名类和操作时 要描述他们的效果和目的,而不是实现方式
Value Object 除创建方法外只包含函数
函数:不改变系统状态的计算方法
命令(操作):改变系统状态有副作用的方法 ,仅EntityObject 可以包含。
查询:只查数据没有副作用的方法
封装的意义-看框架源码时可以通过封装的接口名称 方法名称 明确其含义 而非一行一行看代码
Module 和 aggregate 的目的都是为了限制相互依赖的关系网。
概念过载:当一个对象 承担了过多的责任和逻辑就会出现概念过载
申明式编程风格 ,让代码读起来像是领域中业务场景的概念定义,而不是一处理逻辑。
闭合操作=申明式+无副作用
3.4 分析模式的应用
规则对象 Assert
Side-effect-free-function
3.5 将设计模式应用到 模型
设计模式 和 领域 模式
设计模式注重解决复杂问题的技术方案实现
借鉴设计模式-策略模式-的思路来整理领域中过程和规则的设计方式
模型 --模式 --模式思想
组合模式-部分和整体具体相同的特性和操作,可以实现递归操作
领域模式特征:适用于模型也要适用于现实
3.6 通过重构来得到更深层理解
柔性设计:例子 手指,关节处是柔性设计,关节受伤 修复容易,非关节要变化就严重了动骨头了。
重构 -明面上的修改 和 暗构-暗地重构植入基因
持续重构