借助COLA理解DDD领域驱动设计
2021-10-12 本文已影响0人
舞鹤Roc
写在前面
DDD其实早于微服务架构设计思想,DDD是程序员架构之路上的艺术品,提升架构思维与软实力。
随着业务和代码的堆积,无论是传统的SSH/SSM,还是现在主流的微服务,都在出现着大批量的代码老化,使得需求难提、代码难读、维护困难、测试困难……
如今的大厂里也在极力推广DDD,阿里也出了应用架构 COLA
初步感知
我们先利用阿里云的Aliyun Java Initializr去创建出一个DDD项目,选择应用架构为COLA,选择DEMO:
然后获取代码,展示代码结构如下:
COLA代码结构
COLA是一种架构思想,是整合了洋葱圈架构、适配器架构、DDD、整洁架构、TMF等架构思想的一种应用架构,我们重点去看domain里的代码,发现很多与我们之前不一样:
实体与充血模型:实体类里没有Getter和Setter方法,只有构造函数和业务方法,表现业务领域的能力
仓库与工厂:Metric仓库抽象类(服务的使用指定对应的CODE),其实现类同步继承EntityObject
隔离外部服务:领域只关注业务,数据支撑交由基础设施
小总结
设计领域模型的一般步骤如下:
根据需求划分出初步的领域和限界上下文,以及上下文之间的关系;
进一步分析每个上下文内部,识别出哪些是实体,哪些是值对象;
对实体、值对象进行关联和聚合,划分出聚合的范畴和聚合根;
为聚合根设计仓储,并思考实体或值对象的创建方式;
在工程中实践领域模型,并在实践中检验模型的合理性,倒推模型中不足的地方并重构。
DDD与设计模式:
实现DDD的时候可以使用大量的设计模式,这其实提升了代码的质量,但是相对的门槛提高。