《领域驱动设计与模式实战》简评与笔记

有需要电子书在这里下载

链接: https://pan.baidu.com/s/1oEgPljwhPK7kr7cpDdjr8Q 密码: 552d

《领域驱动设计与模式实战》简评与笔记_第1张图片
领域驱动设计与模式实战

今天泡了一天图书馆,把这本书基本翻了个遍。这本书作者应用DDD的思路,用.NET语言解决了一个客户订单管理的一个场景问题。这本书没有像《领域驱动设计》一样重点在理论思想的阐述,从战略设计到战术设计,充斥了各种名词,整个过程最大的特点就是实战性很强,将DDD中的各种名词在整个实现过程中进行说明,从业务分析到模型的设计到设计方案的选取有利弊到利用TDD进行程序设计和重构都做了一个很好的演练。令我印象深刻的是TDD和重构的部分,基本贯穿了整个设计实现过程,在TDD的过程中对设计进行重构,也对模型进行了调整和精化。但是可惜的是,因为受制于要作为讲解实现的案例,问题域的设计不能太复杂,所以在问题域的分解和方案域限界上下文的对应关系方面没有太深入讨论。虽然后面对引入了SOA服务的讨论,但是还是没有实际案例呈现,稍稍可惜。

几个有感触的点,记录一下:

1、软件的维护成本远大于开发成本,基于模型的设计可以帮助我们降低维护成本,延长软件的寿命。

以领域为中心的设计更加清晰,也是一种更加忠实于领域抽象的实现,因而可维护性更高,同时领域模型是减少逻辑重复的优秀工具。

2、领域模型和关系数据库之间的阻抗失配

面向对象世界和关系世界之间的映射的各种问题,称为阻抗失配。

A、领域模型和数据库处于不同的地址空间中,需要在他们之间移动数据。

B、两者之间没有基本类型完全相同,比如string与varchar,datetime等;

C、对于关系的处理;数据库中通过重复值,主键和外键形成关系,所以关系模型中的一切事物都是数据,甚至关系也是数据。在面向对象的模型中,可以通过内置对象标识符引用的方式解决。

D、粒度的处理。例如人的家庭和工作电话信息:关系数据库中可以将家庭和工作电话信息用到的字段都放在一个表中,但是在对象设计的处理一般会把电话信息独立,再加个类型作为区隔。

3、重构+TDD=事实

4、对于设计模式的使用和理解,从无意识到无意识

使用它,但未意识到使用它-》听说并阅读一些知识,尝试它-》了解更多,有目的的使用-》热衷并传播它-》有所顿悟-》更成熟更含蓄的使用-》看到缺点-》对概念提出疑问-》忘记它-》使用它,但未意识到使用它

5、DDD中的架构模式与GOF中的设计模式的异同

DDD中用到工厂模式,GOF中也有工厂模式,当然还有其他模式。两者有所重叠,因为模式是用于领域模型的结构化很好的工具。但是作为设计模式更关注技术性和通用性,在领域模式中更关注领域模型的核心,让领域模型更清晰,富有表现力,更有目的性,让所获得的领域知识在领域模型中变得更明显。

·

你可能感兴趣的:(《领域驱动设计与模式实战》简评与笔记)