在上一篇中,介绍了领域驱动设计的目的,组成的基本单元。剩下的部分,介绍执行过程中的注意事项。包括重构的作用和操作步骤,以及如何在不同环境下,仍然保持模型一致性。
重构普遍存在于所有软件开发过程。有一些自动化的方法来支持重构,这些方法更加关注于代码本身。但是ddd中的重构概念侧重于领域关系,会产生一个更深层次去理解领域关系的结果导向。为了不产生更多偏差,可以使用“隐式概念显示化”,“规约”,“过程”,“约束”来保证大家对整个项目理解的一致性。
前面提到为了减少沟通gap,在多个团队合作时,是采用通用语言或者说模型来进行交流的。对模型一致性的要求,会贯穿于整个开发周期。不论是正常开发构成还是重构,ddd提出,可以通过下面的方案来保证模型一致性
1.界定上下文。这个概念类似微服务中的schema定义。工作量在于需要定义多个模型的上下文。好处是当确定了模型的上下文之后,各个模型的负责人将各司其职
2.持续集成。由于会不停的进行迭代或者重构,通过持续集成能够保证整个项目的质量,理论上测试集足够充分时,任何错误都可以被检测出来。开发人员可以将更多精力放在新的功能中。
3.上下文映射。这个给出了模型中各个上下文彼此之间的关系,目的是让每个工作人员都能够理解整体。
4.共享内核。两个团队之间通过共享内核,来减少重复开发的工作
5.客户-供应商。当A系统依赖于B系统时,且B也尊重A的需求,那么A-B就是一个客户-供应商的关系。由于客户-供应商之间有一个良好定义的接口,B可以自由更改自己的内部实现,而不用收到A的约束
6.顺从者。当A依赖于B,同时完全不能约束B时,就是顺从者的模式。比如普通的网上冲浪者,和门户网站之间的关系
7.防崩溃层。可以简单理解为适配器层,位于客户端和服务端的一层,可以简化系统的层级结构
8.独立方法。当应用比较简单时,为了不投入过多精力去做模型一致性的保证,可以用独立方法。也就是将当前应用独立建模,不考虑与其他应用的依赖关系,简单快速的完成应用
9.开放主机服务。由于为一个子系统设计一套防崩溃层需要一定投入,当设计n套防崩溃层时的投入可能超出负担范畴。开放主机是指不做适配了,而是提供开放协议,由需要这套子系统的其他子系统来实现交互
10.精炼。模型过大时,可以通过“精炼”将本质的东西提取出来,比如找到核心域是什么,最有价值的业务是什么,投入最优质资源去支持。而其他普通子域可以通过外包等方式来实现。
以上为全书主要内容
网友评论