Golang领域模型-开篇

本文介绍了领域驱动设计(DDD)的概念,强调其在软件工程中的重要性,并探讨了贫血和充血模型的区别。文章通过举例说明DDD如何帮助划分领域和子域,以及在Golang中应用DDD的战术设计,包括实体、资源库、聚合根等。同时,提供了项目代码链接供读者实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言: 八叉树是一位拥有数十年编程经验,醉心于代码艺术的工程师。freedom是他结合《实现领域驱动设计》与《六边形架构》两文为一众Gopher打造出最符合DDD战术设计的轮子!

DDD是什么?

领域驱动设计(DDD) 做为一种软件工程的方法论,它可以帮助我们设计高质量的软件,或者说任何工程的设计都需要方法论,不论是城市设计、建筑设计、室内设计。

比如没有方法论的情况下楼是可以盖起来的,或许整个楼道和窗户上挂满了电话线、闭路线、电线?下水道隔三差五就堵了?某一户跳闸了导致整个楼都停电了?那么盖楼前是否有好的方法论去建模呢?

不论任何行业的工程设计都因该使用正确的方法论去设计。任何行业的方法论也离不开八个字分而治之、拥抱变化。如果和城市的设计、建筑的设计相比较,我认为软件的设计会更复杂,软件的迭代和变化周期更快,也意味着我们更需要好的方法论。

字面上的领域模型并不抽象,可以理解为uml建模中的对象,它有什么属性?它有什么行为?那么就可以把它规划成某个领域的概念。

DDD 是一个分而治之的过程,是一系列分而治之的方法论。

如何把一个公司的领域划分成多个子域,比如教育公司会划分成作业子域、课程子域。电商可能会划出商品子域、物流子域。 如何为每个子域划分出多个实体、聚合、服务,如何每一个实体和聚合设计它们的事件,如何为每一个实体设计它们的仓库。这就是DDD要做的事情!

贫血和充血?

贫血的代码是指数据和行为的分离,业务系统迭代中行为多变和数据的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值