突破
何为突破,DDD的实践过程是渐进式的。你的重构与回报不是呈线性关系的。通常会在具体的某个点会出现一个飞跃。这个飞跃很有意义,同时也充满了危险。
隐式概念->显式概念
何为隐式概念
就是需求中关注的部分,但是在你的结构中没有体现这一部分。这部分概念就被隐藏起来了。
如何发现隐式概念
- 与领域专家探讨
- 思考领域的矛盾部分
- 查阅书籍验证模型
- 发现一些约束
什么需要被转换成显式
- 特定的领域概念
- 约束条件
- 领域关键过程
Tips
何时约束需要单独提取成一个类
- 计算约束的数据从定义上并不属于这个对象
- 相关规则在不同的类中重复出现
- 很多设计和需求谈论都围绕这些约束,而这段代码隐藏在过程代码中
柔性设计
目的
方便重构,方便开发人员开发
方式
- 命名需要表意
- 方法无副作用(不需要一层一层的观察它的行为)
- 可以使用断言明确表示
- 低耦合
- 闭合操作(返回类型与参数类型相同)
设计模式在模型中的应用
从代码层面它是技术设计模式,从模型上看它是概念模型。
策略模式
通过策略模式分离不同的概念。侧重点在表示概念的能力。
组合模式
使用组合模式可以根据业务组合不同的对象。
重构加深理解
关注3个点
- 以领域为本
- 用一种不同的方式看待事物
- 始终坚持与邻域专家对话
因为模型与领域不同才会开始领域的重构。
何时重构
- 设计没有表达团队对领域的最新理解
- 重要的概念被隐藏在设计中
- 发现一个能令某个重要的设计部分变得更灵活的机会