领域驱动设计——DDD的整体设计流程

一、领域驱动设计的应用

在前面学习分析了DDD的内容和各种技术,就可以在实际应用这种设计方式了。DDD倾向于对业务领域抽象的分离,可以更好的在应用层就展开各种领域设计,由表及里,由外到内。更为重要的是,DDD的模型是贯穿整个软件设计和开发的过程,而不是像以前一样,模型在设计完成了基本就抛弃了。这也意味着,真正把模型设计好并最终实现,就可以从软件的宏观设计到具体实施都有一个整体的驱动模式。

二、设计流程

那么一个DDD的基本设计流程是什么呢?或者说如何去从整体上把握一个DDD设计的过程呢。一般来说,可以分为几步:

1、基础准备
这里包括了一些基础的设计语言(UBIQUITOUS LANGUAGE)和设计模式等知识的学习和应用,当然也包括一些具体的设计工具的使用。另外,最重要的是要有一定的软件设计设计架构基础,否则一些基础的方法都不明白只会让设计更困难。
2、进行整体的分层
一般来说,就是要会把整个设计根据实际情况分为几层,比如常见的UI层、应用层、领域层、数据层等等。
3、领域模型的设计
这是最关键的一步,模型的好坏,直接决定了整个设计的成败,它一般可以用以下的步骤来进行:
a)由实际需求创建一个初步的领域模型,确定相关的基本的模型等概念及其相互关系。对这些领域概念要精确描述不能有模糊的歧义的导向
b)根据具体情况确定需求的软件功能,确定应用层的业务类,进一步提供划分应用层和领域层的职责边界
c)在上述基础上,通过领域建设分析,确定实体、值对象及领域服务等基础组件
d)进一步分析实体等之间的关联,利用各种分析手段及设计原则并综合分析性能取舍,裁剪关联的度和方向
e)确定聚合边界和聚合根,这个需要一个不断的积累经验的过程
f)给聚合根创建仓库,一般情况是一个聚合有一个仓储,重点是设计好相关的接口
g)将设计好的领域模型和实际场景进行对比分析,走查相关缺陷和不足
h)确定采用工厂还是构造函数来创建领域实体或值对象
i)重构模型即在现有的模型基础上查找相关的不足,对一些关联关系、聚合设计等进行反思等等。这是一个不断否定-肯定的过程

4、将DDD的种设计综合运用
根据实际情况,通过边界上下文控制,抽象各种设计模式,不断重构和精练,将模型的优化放到整个生命周期中。
5、实际中不断的反复思考
这有点类似于人们说的玄学了,不断的思考不断的和实际的设计流程印证分析,最终会有一个顿悟的时刻。

三、总结

总体上来说,DDD领域驱动设计至少在国内的公司真正应用的不多。特别是中小公司,对这个基本是不感兴趣的,他们觉得还不如画个漂亮界面更好。这就和城市建设一样,再好的高楼大厦,其实是在优秀的城市设计中承载的。或许,这也可以从另外一个角度解释为什么国内的程序员都很累很卷的原因吧。

猜你喜欢

转载自blog.csdn.net/fpcc/article/details/129739700